봄-콩 자동 배선

XML 구성 파일에서 <bean> 요소를 사용하여 Bean을 선언하고 <constructor-arg> 및 <property> 요소를 사용하여 <bean>을 삽입하는 방법을 배웠습니다.

Spring 컨테이너는 autowire <constructor-arg> 및 <property> 요소를 사용하지 않고 협업 Bean 간의 관계를 제공하므로 대규모 Spring 기반 애플리케이션에 대해 작성하는 XML 구성의 양을 줄이는 데 도움이됩니다.

자동 배선 모드

다음은 Spring 컨테이너가 종속성 주입을 위해 자동 연결을 사용하도록 지시하는 데 사용할 수있는 자동 연결 모드입니다. <bean /> 요소의 autowire 속성을 사용하여autowire 빈 정의 모드.

Sr. 아니요 모드 및 설명
1 no

이것은 자동 연결이 없음을 의미하는 기본 설정이며 연결을 위해 명시적인 빈 참조를 사용해야합니다. 이 배선에 대해 특별히 할 일은 없습니다. 이것은 Dependency Injection 장에서 이미 본 것입니다.

2 이름으로

속성 이름으로 자동 연결. Spring 컨테이너는 XML 구성 파일에서 autowire 속성이 byName 으로 설정된 Bean의 속성을 확인 합니다. 그런 다음 구성 파일에서 동일한 이름으로 정의 된 Bean과 속성을 일치시키고 연결하려고합니다.

byType

속성 데이터 유형별 자동 연결. Spring 컨테이너는 XML 구성 파일에서 autowire 속성이 byType 으로 설정된 Bean의 속성을 확인 합니다. 그런 다음 속성을 일치시키고 연결하려고합니다.type구성 파일의 Bean 이름 중 정확히 하나와 일치합니다. 그러한 Bean이 둘 이상 있으면 치명적인 예외가 발생합니다.

4 constructor

Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised.

5 autodetect

Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType.

You can use byType or constructor autowiring mode to wire arrays and other typed-collections.

Limitations with autowiring

Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.

Sr.No. Limitations & Description
1

Overriding possibility

You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring.

2

Primitive data types

You cannot autowire so-called simple properties such as primitives, Strings, and Classes.

3

Confusing nature

Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring.