1.4.5 Autowiring Collaborators by ys
Last updated
Was this helpful?
Last updated
Was this helpful?
auto wiring : spring 빈 설정을 최소한으로 할 수 있도록 하는 기능. 특정 빈을 지정하는 방식이 아닌, spring 프레임워크가 해당 방식에 맞는 spring빈을 자동으로 연결.
wiring : 의존성 주입을 통해 spring bean을 연결하는 것.
Spring 컨테이너는 협력 빈들 사이의 관계를 자동 연결 (autowire) 할 수있습니다. Spring이 ApplicationContext
의 내용을 검사함으로써 빈에 대한 협력 bean들을 자동으로 처리하도록 할 수있습다. Autowiring에는 다음과 같은 장점이 있습니다.
Autowiring은 프로퍼티나 생성자의 아규먼트를 지정할 필요성을 크게 줄여줍니다. ( 이점에 대해 이 장의 다른 곳에서 논의 된 bean 템플릿과 같은 다른 메커니즘도 역시 중요합니다.)
Autowiring은 객체의 발전처럼 설정을 업데이트 할 수 있습니다. 예를 들어 클래스에 의존성을 추가해야하는 경우 설정을 수정할 필요없이 해당 의존성을 자동으로 충족시킬 수 있습니다. 따라서 autowiring은 개발 중에 특히 유용합니다. 코드베이스가 보다 안정적인 상황해서 명시 적 연결하기위해 옵션을 변경 할 필요가 없습니다.
setter Injection 사용 시
Autowire 사용시
XML 기반의 설정 메타 데이터 ( Dependency Injection 참조 )를 사용할 때, <bean/>
의 요소 autowire
속성을 사용하여 Bean 정의에 대한 autowire 모드를 지정할 수있다 . autowiring 기능에는 네 가지 모드가 있습니다.
빈마다 autowiring을 지정하고 따라서 autowire를 선택할 수 있습니다. 다음 표에서는 네 가지 autowiring 모드에 대해 설명합니다.
표 2. 자동 배선 모드
방법
설명
no
(기본값) autowiring 없음. 빈 참조는 ref
요소 로 정의해야합니다 . 협력 bean들을 를 명시 적으로 지정하면 제어력과 명확성이 높아지기 때문에 대규모 배포에서는 기본 설정을 변경하지 않는 것이 좋습니다. 어느 정도까지는 시스템의 구조를 문서화합니다.
byName
속성 이름에 의한 자동 연결. Spring은 autowired 할 필요가있는 프로퍼티와 같은 이름의 bean을 찾는다. 예를 들어 bean 정의가 이름으로 autowire로 설정되고 master
프로퍼티가 포함되어 있으면 (즉, setMaster(..)
메소드 가있는 경우 ) Spring은 master
로 명명 된 bean 정의를 찾고 프로퍼티를 설정하는 데 사용합니다.
byType
컨테이너 내에서 프로퍼티 타입과 정확히 일치하는 하나의 빈이있다면 프로퍼티를 자동연결합니다. 하나보다 많은 빈 존재하면 해당 빈에대해서는 byType 자동 연결을 사용하지 말아야 한다는 것을 말해주는 fatal 예외가 던져집니다. 일치하는 빈이 하나도 없다면 아무일도 일어나지 않습니다. ( 프로퍼티도 정의 되지 않습니다.)
Constructor
byType
과 유사하지만 생성자 아규먼트에 적용됩니다. 컨테이너에 생성자 아규먼트 타입과 정확히 일치하는 빈이 하나도 없으면 fatal 오류가 발생합니다.