-
스프링부트 - 테스트하면서 만들기 인수테스트(Acceptance Test) - TestRestTemplate 단위테스트가 단위별로 태스트를 한다면 인수테스트는 end to end 테스트라고 해서 전체적으로 합쳤을 때 동작을 제대로 하는가를 테스트하는 것 고객 테스트, 시스템 테스트라고도 함 : 인수테스트보단 이름에서 뜻을 유추할 수 있을 것 같음 단순 도메인 로직을 테스트하는 것이 아니라 고객이 사용할 서비스의 일부분 테스트 : 특정 URL 맵핑된 서비스 정상 동작 테스트 테스트 코드 작성해보기 @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class HomeControllerTest { @AutoWired private TestRestTemplate template @Test...
-
스프링 @RestController와 @Controller의 내부 동작 차이 @Controller : 선언한 컨트롤러는 뷰 이름을 리턴하고, 뷰 리졸버가 뷰를 찾아 응답하는 형태 : text/html @RestController : @Controller 선언과 @ResponseBody 선언을 합쳐둔 어노테이션 @ResponseBody : Http response message body에 컨버팅된 리턴 데이터를 써서 응답함 리턴 데이터가 MessageConverter를 거쳐 요청자의 요청 형태로 컨버팅(json, xml)하여 응답 메세지 바디에 입력해서 응답함 MessageConverter 라이브러리 : Jacson(json), Marshalling(xml) @RestController 적용 코드 @RestController @RequestMapping("/api/questions/{questionId}/answers") public class ApiAnswerController { @PostMapping public Answer create(@PathVariable Long questionId, String...
-
스프링 리팩토링 하기 - 관심사 분리(역할 분리) 해야할 일, 언제 어떻게 변화될지 구분되는 것 : 하나의 객체는 하나의 관심사(역할, 책임)만 담당해야함 다른 관심사가 하나에 모여있다면 하나의 관심사 변경이 다른 관심사 변경에 영향을 미칠 수 있기 때문에 분리해서 감추는 것이 좋음 : 사용만 하게끔 변경점은 클래스 단위가 아니라 메소드에서 같은 코드를 사용하고있고, 변경이 된다면 여러 변경점이라 보면 됨 - 같은 코드를 사용하더라도 표준 방법을 사용하게 리팩토링하기 독립적으로 관리하면서 필요에 의해 의존성을 주입(Dependency Injection)해주는 것임 : 필요에...
-
스프링 스프링이 추구하는 가치에 맞게 개발해보기 - 스프링이 DI를 사용하게된 이유 자바가 추구하는 가치 그대로 객체지향이다 : 이전 엔터프라이즈 기술은 기술 개발에만 치중해있었음 오브젝트 중심 개발 : 객체 존재, 객체 관계, 객체지향적인 설계(역할 분리, 변경이 생기더라도 한 곳에만 변경을 할 수 있게 확장을 고려한 설계, 쪼갤 수 있을 때까지) User(자바빈)와 UserDAO(데이터베이스 - 데이터 핸들링) 관심사란? 객체가 처리해야할 일 UserDAO를 예를 들어서 : DB 커넥션, SQL 생성 / 실행, 사용한 자원 반환 아래 UserDAO의 문제점은 무엇일까?...
-
ajax로 서버에 콜하기 ajax란? asyncronous javascript and xml의 줄임말 비동기로 서버에 요청을 하고, 응답 데이터를 받아 랜더링까지 하는 기술 : 백그라운드 작업, 부분적으로 새로고침 효과를 얻을 수 있음 응답 데이터로 초기에는 xml을 사용하다가 json을 사용함 json이란? 자바스크립트는 아니지만 자바스크립트의 객체 문법처럼 짜인 데이터 key - value로 맵핑되어있음 : 변수에 json을 할당하면 변수.key로 value를 찾을 수 있음 json docs 보기 xml 대신 json을 사용하는 이유? 가벼움 : xml은 마크업 언어로 의미있는 태그 내에 데이터가 감싸져있는 형태...