AOP 가 무엇인지 알아보기에 앞서 AOP 가 등장하게된 배경에 대해 먼저 알아보자. 웹 어플리케이션 서버에서 흔히 사용되는 패턴인 MVC + Repository 패턴이다. 각 역할별 책임을 분담하여 레이어를 이루는 구조이다. 만약 위 구조에서 각 레이어에서 호출, 응답에 대해 로그를 남겨 추적하고 싶다면 어떻게 해야할까? (일반적으론 이런 경우 APM 이 사용되지만 배경 설명을 위해 로그를 예로 들었다.) 단순한 방법으론 위와 같이 각 레이어에 로그 추적 코드를 추가하는 방법이 있을것이다. 하지만 만약 로그 추적을 해야하는 파일의 갯수가 수백개인 경우에도 이렇게 작업을 해야할까? 할수야 있겠지만 매우 비효율적이고 관리하기 힘든 형태이다. 잘 살펴보면 로그 추적 로직은 공통 코드로서 유틸리티한 기능이기 ..
spring
스프링을 공부하다 문득 @Bean 과 @Component 의 차이에대해 궁금증이 생겨 알아보았고 그 내용을 정리해보고자 한다. 스프링 컨테이너에의해 생성, 관리되는 자바 객체(POJO(Plain Old Java Object))이며 기본적으로 싱글톤 형태로 생성, 관리 된다. 이 스프링 빈을 등록하는 방법에는 2가지가 있다. 1. 스프링 부팅 과정에서 스캔되어 바로 등록 @Component 어노테이션 사용. 대부분의 경우 @Component 를 사용하여 스프링 빈으로 등록하며 특별한 경우가 아니면 이 방법을 사용할 것이다. ex) @Controller, @Service, @Repository ... (@Component 를 갖고 있는 어노테이션들) 스프링 DI 관련하여 문서에선 일반적으로 이 방법을 추천 ..