
로그를 확인하기 위해 application.properties에서 로그를 DEBUG 레벨로 설정한다.그러면 웹페이지에 새로 접속했을 때 로그가 다음과 같이 나온다.DispatcherServlet이 초기화되기 시작.Spring MVC의 핵심 서블릿(dispatcherSe

findOwners.html원래는 th:field=”\*{lastName}”으로 되어 있었다.이를 firstName으로 수정한다.⬇️OwnerController.javanull 처리하는 부분의 getLastName, setLastName을 getFirstName, se
제어권이 뒤바꼈다참고:Inversion of Control Containers and the Dependency Injection pattern내가 사용할 의존성의 타입(인터페이스)만 맞으면 어떤거든 상관없다.코드 테스트 하기도 편하다.owners를 사용하지만 생성하지

= ApplicationContext (BeanFactory)IoC 컨테이너 : 빈을 만들고 엮어주며 제공해준다.어노테이션과 인터페이스 상속을 통해 빈으로 등록할 객체를 설정할 수 있으며,빈으로 등록된 객체들 간의 의존성 주입은 IoC 컨테이너가 자동으로 해준다.다음과

스프링 IoC 컨테이너가 관리하는 객체빈이라는 것은 ApplicationContext가 알고 있는 객체들이다.어노테이션 프로세서 중,@Component가 붙은 클래스를 찾아서 그 클래스의 인스턴스를 빈으로 등록하는 일을 하는 어노테이션 처리기가 있다.@SpringBoo
필요한 의존성을 어떻게 받아올 것인가다음 코드에서는 OwnerRepository 의존성을 생성자를 통해 주입받고 있다.생성자를 이용해 레퍼런스를 받은 다음, 다른 레퍼런스로 바뀌지 않는 것을 보장하기 위해서 final을 붙이면 좋다.그런데 원래, 다음과 같이 생성자에
흩어진 코드를 한 곳으로 모으자. 흩어진 AAAA와 BBBB 위 상황에선 AAAA를 AA로 바꾸고 싶다면, 일일이 바꿔야 한다. 부가적으로 하던 공통의 일들은 따로 모으면 안 되나? ⬇️ 모아 놓은 AAAA와 BBBB 공통 관심 사항을 따로 빼서 정의해 놓았
기존 코드 건드리지 않고 새 기능 추가하기위와 같은 현금 결제하는 클래스가 있다고 해보자.그리고 아래와 같이 무언가를 살 수 있다.그런데, 결제를 할 때 걸리는 시간을 측정하고 싶다.그러면 payment.pay(amount); 위아래로 시간을 측정하는 코드를 추가할 수
@LogExecutionTime으로 메소더 처리 시간 로깅하기이렇게 하면,@LogExecutionTime이 붙은 클래스는 Aspect를 적용할 타겟이 되어 성능 측정을 할 수 있다.이외에도 AOP는 공부할게 정말 많으니 꾸준히 공부해보자.