본문 바로가기
JavaScript/Spring

[spring framework]스프링 프레임워크 DI_의존성주입_생성자 인젝션 (2)

by Alkaloid 2022. 1. 27.
반응형

지난번 의존성 주입을 이용해 해결을 하고자 했습니다.

의존성 주입은 [생성자 인젝션]과 [세터 인젝션]두가지가 있습니다.

 

우리가 xml에 bean을 이용해 클래스를 등록해 놓으면, 컨테이너는 설정파일 (xml)에 등록된 클래스의 객체를 생성할때, 매개변수가 없는 기본생성자를 호출합니다.

-> 기본 생상자? SamsungTV() {} 와 같이 ()안에 아무것도 없는것을 말합니다.

그런데, 우리는 기본생성자가 아닌 매개변수가 있는 다른 생성자를 호출 하려합니다. 이것이 [생성자 인젝션]입니다.

 

 

 

위 코드를 SamsungTV클래스에 추가 해봅시다.

우리가 기존에 작성했던것과는 생김새가 다르죠?

위에서 설명한 기본생성자가 아니기 때문입니다. ()안에 Speaker speaker가 추가되었습니다.

그리고 위의 코드도 추가를 해줍니다. 가존에 있던 volumeUp과volumeDown은 주석이나, 지워주셔야 합니다.

 

그리고 컨테이너가 설정파일을 읽어 객체를 생성할수 있게 xml파일에 클래스를 등록하겠습니다.

위와 같이 추가해줍니다.

여기서 주의할 점은 constructor-arg에 ref와 맨 아래 bean의 id가 같아야 합니다.

-> 생성자 인자로 전달할 객체의 아이디를 constructor-arg의 ref속성을 참조한 것입니다.

 

 

생성자 인젝션을 이용하면 생성자의 매개변수로 의존관계에 있는 객체의 주소를 전달 할수 있습니다.

반응형