본문 바로가기

Spring6

[Spring/Testing] 단언문에 에러 메시지 포함하기 테스트 코드를 작성할 때, 흔히 아래와 같이 단언문(assertion)을 작성한다. assertThat(owner.getLastName()).isEqualTo(newLastName); owner의 실제(actual) lastName이 newLastName과 같으면 아무 일도 일어나지 않으면서 테스트가 성공하고, 값이 다르다면 빨간 막대가 뜨면서 테스트가 실패할 것이다. 물론 이렇게만 작성해도 테스트가 실패한 이유를 테스트 러너가 제공하기는 한다. "어떤 값을 expect했는데, 실제로는 이런 값이 나왔다"라면서... 하지만 사람이 읽고 좀 더 이해하기 쉽도록 메시지를 넣어준다면 더 좋을 것이다. 《JUnit in Action》에서는 "assert 메서드를 호출할 때는 에러 메시지도 무조건 함께 기입하는 .. 2020. 4. 5.
Spring MVC — HandlerMethodArgumentResolver 사용하기 Spring MVC의 Controller에서 parameter를 받을 때 흔히 다음과 같이 한다. @GetMapping(path = "user/{userId}/post/list") public ApiResult posts( ... @RequestParam("offset") int offset, @RequestParam("limit") int limit) { ... return new ApiResult(...); } @RequestParam을 통해 URL 상의 매개변수를 직접 받아 사용하는 모습이다. 위와 동일한 방법으로, 더 많은 수의 값들을 받을 수도 있다. @GetMapping(path = "user/{userId}/post/list") public ApiResult posts( ... @Reques.. 2019. 5. 3.
IoC / DI DI란 Dependency Injection의 약자로, IoC라는 원칙을 구현하기 위한 일종의 패턴이라고 볼 수 있다. 그렇다면 IoC란 무엇일까? IoC IoC란 Inversion of Control의 약자로, 객체를 생성하고 객체 간의 의존 관계를 맺어주는 등의 작업을 프레임워크가 대신 해준다는 것이다. 관련된 metadata(설정 정보)를 만들어 놓으면, 그것을 기반으로 Spring Container(혹은 IoC Container), 혹은 프레임워크가 해당 작업을 대신한다는 원칙이다. 개발자가 직접 객체를 생성하고 의존 관계를 맺어줄 필요가 없다. 전통적인 프로그래밍에서는, 개발자가 작성한 코드에서 → 라이브러리를 호출했다면, IoC는 프로그램의 흐름을 프레임워크가 제어하고, 프레임워크에서 → 개발.. 2019. 3. 7.
Spring MVC 동작원리 / 구성요소 Spring MVC의 동작 원리1. DispatcherServlet이 브라우저로부터 요청을 받는다. 2. DispatcherServlet은 요청된 URL을 HandlerMapping 객체에 넘기고, 호출해야 할 Controller 메소드(핸들러) 정보를 얻는다. 3. DispatcherServlet이 HandlerAdapter 객체를 가져온다. 4. HandlerAdapter 객체의 메소드를 실행한다. ※ 보다 정확하게 표현한다면, HandlerMapping은 DispatcherServlet로부터 전달된 URL을 바탕으로 HandlerAdapter 객체를 포함하는 HandlerExecutionChain 객체를 생성하며, 이후 DispatcherServlet이 HandlerExecutionChain 객체로.. 2019. 3. 7.
POJO 이해하기 이 글은 spring.io의 Understanding POJOs를 번역한 것입니다. POJO란 Plain Old Java Object의 줄임말이며, 프레임워크 확장에 의해 엉망진창이 되지 않는, 순수한 Java 객체(인스턴스)를 의미한다.만약 JMS로부터 메시지를 받고자 한다면, MessageListener interface를 구현한 클래스를 다음과 같이 작성해야 할 것이다. public class ExampleListener implements MessageListener { public void onMessage(Message message) { if (message instanceof TextMessage) { try { System.out.println(((TextMessage) message)... 2018. 12. 12.
Spring Boot / JSP jstl 관련 에러 (An invalid XML character 등) Spring Boot로 간단한 survey 페이지를 만들고 있는데, 원인을 알 수 없는 이상한 에러가 발생하고 있다. pom.xml 4.0.0 com.-----(생략)----- -----(생략)----- 0.0.1-SNAPSHOT jar -----(생략)----- -----(생략)----- org.springframework.boot spring-boot-starter-parent 2.1.0.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime mysql mysql-connector-java runtime org.springframe.. 2018. 11. 27.