본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : @Configuration과 바이트코드 조작

by 오주현 2022. 1. 9.
반응형
@Configuration과 바이트코드 조작

[Spring Boot] : @Configuration과 바이트코드 조작


@Test
    void configurationDeep() {
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

        AppConfig bean = ac.getBean(AppConfig.class);

        System.out.println("been = " + bean.getClass());

    }
  • AnnotationConfigApplicationContext에서 파라미터로 넘긴 값은 스프링 빈으로 등록이 되기 때문에 AppConfig도 스프링 빈이 된다.
  • AppConfig 빈을 조회해 보면

  • 클래스 명에 CGLIB이 붙어있다.
  • 이 클래스는 내가 만든 클래스가 아니라 스프링이 CGLIB이라는 바이트코드 조작 라이브러리를 통해 AppConfig 클래스를 상속받은 임의의 다른 클래스를 만들고 그 다른 클래스를 스프링 빈으로 등록한 것이다.
  • 참고하면 AppConfig@CGLIB은 AppConfig의 자식 타입이라서 AppConfig 타입으로 조회가 가능하다.
  • @Configuration을 사용하지 않고 @Bean만 적용하면 어떻게 되나?
    • @Bean만 사용해도 스프링 빈으로 등록은 되지만 싱글톤을 보장하지는 않는다.
  • 결론
    • 스프링 설정 정보는 항상 @Configuration을 사용하면 된다.

출처 : 스프링 핵심 원리 - 기본편 - 인프런
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
(강의 내용을 참고로 개인 공부하여 올린 내용입니다.)

반응형

댓글