IT 강의 정리/윤재성의 스프링 입문

[섹션3][DI] 14강 자동 주입

Nellie Kim 2022. 10. 11. 10:47
728x90

14. 자동 주입

지금까지 Bean을 정의할 때 주입할 객체는 생성자를 통한 주입이나 setter를 통한 주입을 사용했다.

스프링에서는 객체를 주입할 때 자동으로 주입될 수 있도록 설정할 수 있는데,

이름, 타입, 생성자를 통해 가능하며 이것을 auto wire라고 한다.

기본자료형(정수, 실수, 문자열)은 자동주입이 불가능하며 기존의 방식으로 주입해야 한다. 자동주입은 객체만 가능하다.

 

1) 이름을 통한 주입

xml파일에 id값을 지정해주면 , 변수에 바로 넣는게 아니고  setter메소드를 호출하여 주입해준다.

일반주입과 이름을 통한 자동주입을 비교해보자.

beans.xml
MainClass.java

 

2) 타입을 통한 주입

타입을 통한 자동주입은 , 타입만 같으면 무조건 주입하기 때문에 id값은 생략 가능하다.

beans.xml
MainClass.java

 

3) 생성자를 통한 주입

이렇게 xml파일에 생성자의 매개변수 타입과 정의된 빈의 타입이 일치할 경우 , autowire='constructor' 를 사용하여 생성자자동주입을 할 수 있다 (?)

이때, 객체가 아닌 정수값이나 문자열은 자동 주입이 안되기 때문에 아래처럼 직접 정의 해 줘야 한다.

이때 디폴트 값으로 byName을 지정하고 싶으면 default-autowire="byName" 을 지정해준다.

디폴트 값을 무시하고 싶다면, autowire='no' 를 적어주자.

MainClass.java

 

출처 :  [인프런]윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정