목록전체 글 (572)
오봉이와 함께하는 개발 블로그
스프링 핵심 원리 - 스프링이 제공하는 빈 후처리기 1build.gradle - 추가implementation 'org.springframework.boot:spring-boot-starter-aop'이 라이브러리를 추가하면 aspectjweaver라는 aspectJ관련 라이브러리를 등록하고, 스프링 부트가 AOP 관련 클래스를 자동으로 스프링 빈에 등록한다.스프링 부트가 없던 시절에는 @EnableAspectJAutoProxy를 직접 사용해야 했는데, 이 부분을 스프링 부트가 자동으로 처리해준다.aspectJ 는 뒤에서 설명하고, 스프링 부트가 활성화하는 빈은 AopAutoConfiguration 를 참고하자.자동 프록시 생성기 - AutoProxyCreator앞서 이야기한 스프링 부트 자동 설정으로 ..
스프링 핵심 원리 - 고급편 > 빈 후처리기 적용빈 후처리기를 사용해서 실제 객체 대신 프록시를 스프링 빈으로 등록하자.이렇게 하면 수동은 물론, 컴포넌트 스캔을 사용하는 빈까지 모두 프록시를 적용할 수 있다.더 나아가서 설정 파일에 있는 수 많은 프록시 생성 코드도 한번에 제거할 수 있다.@Slf4jpublic class PackageLogTracePostProcessor implements BeanPostProcessor { private final String basePackage; private final Advisor advisor; public PackageLogTracePostProcessor(String basePackage, Advisor advisor) { this.baseP..
스프링 핵심 원리 - 고급편 > 빈 후처리기 예제1빈 후처리기를 하기 전에 일반적인 스프링 빈 등록 과정을 코드로 작성해보자.@Slf4jpublic class BasicTest { @Test void basicConfig() { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(BasicConfig.class); A a = applicationContext.getBean("beanA", A.class); a.helloA(); Assertions.assertThrows( NoSuchBeanDefinitionException.class, () -> applicationContext..
스프링 핵심 원리 - 고급편 > 빈 후처리기@Bean이나 컴포넌트 스캔으로 스프링 빈을 등록하면 스프링은 대상 객체를 생성하고, 스프링 컨테이너 내부의 빈 저장소에 등록한다.이후에 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다.빈 후처리기 - BeanPostProcessor스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 빈 후처리기를 사용하면 된다.빈 포스트 프로세서는 말 그대로 빈 후처리기 라는 뜻으로 빈을 생성한 후 무언가를 처리하는 용도로 사용된다.빈 후처리기 기능빈 후처리기의 기능은 막강한데, 객체를 조작할 수도 있고, 완전히 다른 객체로 바꿔치기 하는 것도 가능하다.생성: 스프링 빈 대상이 되는 객체롤 생성한다 (@Bean, 컴..
스프링 핵심 원리 - 고급편 > 프록시 팩토리 적용 1지금까지 학습한 프록시 팩토리를 사용해서 애플리케이션에 프록시를 만들어보자.먼저 인터페이스가 있는 v1 애플리케이션에 LogTrace기능을 프록시 팩토리를 통해서 프록시를 만들어 적용해보자.public class LogTraceAdvice implements MethodInterceptor { private final LogTrace logTrace; public LogTraceAdvice(LogTrace logTrace) { this.logTrace = logTrace; } @Override public Object invoke(MethodInvocation invocation) throws Throwable { TraceStat..