티스토리 뷰

Java

Lite Mode Bean

효자발 2020. 11. 5. 11:07

Spring Bean 의 Lite Mode 가 있다.

 

Lite mode 라 함은 Cglib 를 사용하여 바이트 코드 조작을 하지 않음을 의미한다.

 

@Configuration 어노테이션을 지정하게 되면 Cglib가 사용되며 메서드 호출은 모두 1회만 일어나도록 바이트 코드가 수정된다.

@Component 어노테이션을 지정하게되면 Lite Mode 로 동작하여 우리가 예상한 대로 코드가 수행된다.

 

이 때, Configuration 에 proxyBeanMethods 란 설정값을 false로 줄 수 있는데, 이 경우 Lite Mode 라 불리는 상태가 되며 Cglib를 통한 메서드 프록시가 적용되지 않는다.

 

@Configuration
public class ConfigurationClass
{

    @Bean
    public Bean1 bean1() {
        return new Bean1();
    }
    
    @Bean
    public Bean2 bean2() {
        return new Bean2(bean1());
    }
}

이 경우 bean1() 메서드 호출은 1회만 일어난다. Cglib 를 통해 메서드의 프록시를 이용하여 최종적으로 실제 호출이 1번만 이뤄지도록 변형된다.

@Configuration(proxyBeanMethods = false)
public class ConfigurationClass
{

    @Bean
    public Bean1 bean1() {
        return new Bean1();
    }

    @Bean
    public Bean2 bean2() {
        return new Bean2(bean1());
    }
}

그런데 이렇게 할 경우(@Compoent로 대체해도 같다), 우리가 예상하는 바와 같이 bean1 메서드는 2회 호출된다.

 

참고 자료 : wonwoo.ml/index.php/post/2000

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함