본문 바로가기

스프링2

[Spring] 컴포넌트 스캔과 의존관계 자동 주입 시작하기 📌 컴포넌트 스캔과 의존관계 자동 주입 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열하는 방식이 있다. 하지만 이렇게 등록해야 할 스프링 빈이 수십, 수백 개가 되면 일일히 등록하기도 귀찮고, 설정 정보도 커지고.. 이런 저런 단점들이 많지만,,,, 무엇보다 귀찮다 ; 그래서 스프링이 제공하는 것이 컴포넌트 스캔 ComponentScan 이다. 여기에 의존 관계도 자동으로 주입해주는 @Autowired라는 기능도 제공한다. 컴포넌트 스캔을 사용하려면 먼저 @ComponenetScan을 설정 정보에 붙여주면 된다. 기존의 AppConfig와는 다르게 @Bean으로 등록한 클래스가 하나도 없다. 참고 컴포넌트 스캔을 사용하면 @Config.. 2021. 8. 1.
[Spring] @Configuration과 바이트코드 조작 📌 @Configuration과 바이트코드 조작 스프링 컨테이너는 싱글톤 레지스트리다. 스프링 빈이 싱글톤이 되도록 보장해주는 구조다. 그런데 스프링 안에서 자바 코드는 어떻게 관리될까. 결론부터 말하자면 스프링은 클래스의 바이트코드를 조작하는 라이브러리를 사용한다. @Configuration을 적용한 AppConfig에서 더 확실히 알 수 있다. 사실 AnnotationConfigApplicationContext에 파라미터로 넘긴 값은 스프링 빈으로 등록된다. 그래서 AppConfig도 스프링 빈이 된다. AppConfig 스플링 빈을 조회해서 클래스 정보를 출력하면 다음과 같은 결과가 나온다. bean = class com.company.shop.AppConfig$$EnhancerBySpringCGL.. 2021. 7. 26.