자바/Spring

스프링 빈 주입

끄적끄적 2022. 6. 10. 17:33

@ComponentScan 
디폴트가 현재 클래스의 하위 패키지 검색하여 의존관계 자동 주입 (stereotype의 annotation 붙어 있는 Bean을 검색)

Component 사용시 주의점
기본적으로 스프링의 Component는 싱글톤으로 생성되므로, Stateless하게 설계해야 한다.
즉, 컴포넌트로 들어갈 @Service, @Controller, @Repository 에는 클래스 변수 대신에 쓰레드에서 공유되지 않는 지역변수, 파라미터, ThreadLocal 등을 사용해야 함. 필드 변수값을 변경해서 사용하면 멀티쓰레드 환경에서 다른 쓰레드 값이 보여질 수 있음.

 

@Autowired 
컴포넌트 스캔하면서 자동으로 주입. 생성자가 하나이면 @Autowired 생략가능

 

테스트시 빈 주입방법1 : ApplicationContext로 getBean 처리

테스트시 빈 주입방법2 : 스프링의 테스트를 이용해서, ExtendWith 선언하고, ContextConfiguration으로 스캔할 영역지정

반응형