본문 바로가기

SpringFramework Core - I. IoC 컨테이너/9. 어노테이션 기반의 컨테이너 설정

9.1 @Required

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-required-annotation

 

 

public class SimpleMovieLister {

    private MovieFinder movieFinder;
    
    @Required
    public void setMovieFinder(MovieFinder movieFinder){
        this.movieFinder = movieFinder;
    }
    
    // ...
}

이 어노테이션은, bean의 해당 프로퍼티가 설정이 이뤄지는 동안에 채워져야 한다는 것을 의미한다. bean 정의의 명확한 프로퍼티 값을 통해 채워지거나, autowiring을 통해서 채워지면 된다. 만약 프로퍼티가 채워지지 않으면 컨테이너는 예외를 발생시킨다. 이는 후에 발생하게될 NullPointerException이나 그와 비슷한 것들을 피하도록 해줌으로써, 좀 더 꼼꼼하고 명확하게 오류들을 고려하게 해준다. 우리는 여전히 여러분들에게 bean 클래스 자체에 assertion들을 집어넣을 것을 권장한다(예를 들어, init 메소드 안에). 그렇게 하면 필수적인 참조들과 값들을 컨테이너 밖의 클래스에서 사용할때도 강제해줄 수 있기 때문이다.

 

※ @Required 어노테이션은 스프링 프레임워크 5.1에서 공식적으로 폐기되었다. 필수값 세팅에 생성자 주입 방식을 사용하거나, bean 프로퍼티에 대한 setter 메소드와 함께 커스텀한 InitializingBean.afterPropertiesSet() 구현체를 사용하기 위해서이다.