의존성 해석하기
- 스프링은 구성 파일이나 구성 클래스에 적용된 애노테이션을 보고 의존성을 해석
- 구성을 통해 명시하지 않으면 어떤 의존성도 인식하지 못함. 이럴 경우 주입될 bean보다 대상 bean이 먼저 생성이 되어 오류가 발생할 수 있음
- ApplicationContextAware를 구현한 bean은 스프링 IoC 컨테이너에 의해 감지되어 내부에 ApplicationContext가 주입된다.
- ApplicationContext 주입은 생성자 호출 이후에 진행되므로 생성자에서 ApplicationContext를 사용하게 되면 NullPointerException이 발생한다.
구성파일을 이용한 예제
<beans...>
<!-- depends-on 속성을 이용하여 스프링 컨테이너가 의존성을 인식할 수 있도록 함 -->
<bean id="johnMayer" class="com.apress...Singer"
depends-on="gopher" />
<bean id="gopher" class="com.apress...Guitar" />
</beans>
애노테이션을 이용한 예제
...
@Component(“johnMayer”)
@DependsOn("gopher") // @DependsOn 애노테이션을 이용하여 gopher bean이 주입되어야 함을 알림
public class Singer implements ApplicationContextAware {
...