반응형
@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
(강의 내용을 참고로 개인 공부하여 올린 내용입니다.)
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 탐색 위치와 기본 스캔 대상 (0) | 2022.01.09 |
---|---|
[Spring Boot] : 컴포넌트 스캔과 의존관계 자동 주입 (0) | 2022.01.09 |
[Spring Boot] : @Configuration과 싱글톤의 관계 (0) | 2022.01.08 |
[Spring Boot] : 싱글톤 사용시 주의해야 하는 것 (0) | 2022.01.08 |
[Spring Boot] : 싱글톤 패턴 (0) | 2022.01.06 |
댓글