Spring Constructor DI (ref bean주입)
- 프로그래밍/Spring FWK
- 2015. 12. 13. 17:41
Constructor DI
Spring은 Setter 뿐만 아니라 Constructor를 이용한 생성자 DI또한 지원한다. XML설정은 <property>대신 <constructor-arg>를 이용한다.
Annotation설정은 @Autowired를 생성자 메소드 상단에 입력하여 주면된다.
XML적용방법
constructor-arg 태그이용
* messageRender class는 messageProvider를 인자로 받는 생성자가 있어야 한다.
1234567 <bean id="messageProvider" name="" class= "com.ljs.message.provider.DefaultMessageProvider"/><bean id="messageRender" name="" class= "com.ljs.message.render.DefaultMessageRender"><constructor-arg><ref bean="messageProvider"/></constructor-arg></bean>cs
c: 네임스페이스 사용
* messageRender class는 messageProvider를 인자로 받는 생성자가 있어야 한다.
1 <bean id="messageRender" name="" class= "com.ljs.message.render.DefaultMessageRender" c:messageProvider-ref="messageProvider"/>cs
Annotation적용방법
@Autowired 생성자 지정
* 생성자를 만들고, Autowired 어노테이션을 추가한다. 주입하려는 대상 bean은 @Service로 등록되어 있어야 한다.
1234567891011121314 public class DefaultMessageRender implements IMessageRender {private IMessageProvider messageProvider;/*** Constructor DI를 이용하여 DefalutMessageProvider 객체 Injection* Setter는 없어지고 대신 생성자를 만들고 파라메터를 받도록 정의하였다.*/@Autowiredpublic DefaultMessageRender(IMessageProvider messageProvider) {this.messageProvider = messageProvider;}...}cs
app-context-annotation.xml 설정
12345 <!--스프링이 코드기반에서 의존성 요구조건을 스캔하게끔 세팅--><context:annotation-config/><!--스프링이 코드에서 지정된 패키지(및 하위)아래에 있는 주입 가능한 빈을 모두 스캔하도록 세팅--><context:component-scan base-package="com.ljs.message"/>cs
* 별 다른 설명은 불필요하여 관련 된 소스코드만 첨부 함.
다운로드
'프로그래밍 > Spring FWK' 카테고리의 다른 글
Spring Collection (List, Map, Properties, Set) 주입 (0) | 2015.12.13 |
---|---|
Spring 다중 applicationContext 중첩사용 (0) | 2015.12.13 |
Spring SpEL을 이용하여 Value세팅하기 (0) | 2015.12.13 |
Spring Constructor DI (value 주입) (0) | 2015.12.13 |
Spring Setter DI (0) | 2015.12.13 |
Spring Bean생성 XML, Annotation예제 (0) | 2015.12.13 |
IoC in Spring : ApplicationContext (0) | 2015.12.13 |
IoC in Spring : BeanFactory (0) | 2015.12.13 |
이 글을 공유하기