본문 바로가기

SpringFramework Core - I. IoC 컨테이너/4. 의존성

4.5.2. Autowiring으로부터 bean 제외시키기

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-autowire-candidate

 

 

bean마다 autowiring을 해주는 환경에서는, bean을 autowiring으로부터 제외시킬 수 있다. 스프링의 XML 형식에서는 <bean/> 요소의 'autowire-candidate' 속성을 false로 세팅하면 된다. 컨테이너는 그 bean을 autowiring 인프라에서(@Autowired 같은 어노테이션 스타일의 설정에서도) 사용할 수 없게 만든다. 

 

'autowire-candidate' 속성은 타입 기반의 autowiring에만 적용될 수 있도록 설계되었다. 이 속성은 autowire의 후보로 등록되지 않겠다고 설정한 bean이 이름을 통해 명확히 참조될 때에는 적용되지 않는다. 결과적으로 이름이 일치한다면 autowiring은 bean을 주입한다.

 

bean 이름의 pattern-matching에 기반하여 autowire 후보를 제한할 수도 있다. 최상위의 <beans/>요소는 'default-autowire-candidates' 속성을 통해 하나 이상의 패턴을 받아들인다. 예를 들어 이름이 'Repository'로 끝나는 bean들을 autowire 후보에서 제외하고 싶다면 '*Repository'이라는 값을 속성에 제공하면 된다. 여러가지 패턴을 제공하려면 콤마로 구분한 목록으로 정의하면 된다. bean의 autowire-candidate 속성에 정의된 true나 false는 언제나 패턴에 우선한다. 그런 bean들은 pattern matching이 적용되지 않는다.

 

이러한 기술들은 특정 bean들을 autowiring에 의해 주입시키고 싶지 않을 때 유용하다. 이는 제외된 bean이 autowiring을 사용할 수 없다는 것을 의미하지는 않는다. 그보다는 해당 bean이 다른 bean을 위한 autowiring의 후보가 되지 않음을 의미하는 것이다.