construtor-arg ref been = "articleDao"

Download Report

Transcript construtor-arg ref been = "articleDao"

Spring Bean의 Wiring에 대한 정리
- 스프링 빈의 의존성을 설정하는 XML 방법
- Annotation 설정
천은진
스프링 빈의 의존성을 설정하는 XML 방법
생성자 방식
생성자를 통해 의존하는 객체를 전달 받는 경우
public class WriteArticleServicempl(
private ArticleDao articleDao;
public WriteArticleServicempl(ArticleDao articleDao){
this.articleDao = articleDao;
}
public void write(Article article){
....
articleDao.insert(article);
}
}
<constructor-arg> 태그를 이용->의존하는 객체전달
<bean name = "writeArticleService"
class ="madvirus.spring.WriteArticleServicelmpl"/>
<construtor-arg>
<ref been = "articleDao"/>
</construtor-arg>
<construtor-arg ref been = "articleDao"/>
</bean>
<construtor-arg>
<value> 10 <value/>
</construtor-arg>
<construtor-arg value “10” />
스프링 빈의 의존성을 설정하는 XML 방법
프로퍼티 설정 방식
• setXXXX()형태의 설정 메서드를 사용해서 필요한 객체와 값을 전달 받음
public class WriteArticleServicempl implement WriteArticleService(
private ArticleDao articleDao;
public void setArticleDao(Article articleDao){
this.articleDao = articleDao;
}
}
• setXXXX()형태의 메서드에서 프로퍼티 이름은 XXXX가 됨
<bean name = "writeArticleService"
class ="madvirus.spring.WriteArticleServicelmpl"/>
<property name = "articleDao">
<ref been = "mysqlArticleDao"/>
</property>
</bean>
스프링 빈의 의존성을 설정하는 XML 방법
XML 네임스페이스를 이용
•<property>태그를 사용하지 않고 좀 더 간단히 설정
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="monitor" class = "SystemMonitor"
p:periodTime = "10"
p:sender-ref = "smsSender"
/>
</bean>
<bean id="smsSender" class ="SmsSender"
/>
</beans>
Annotation 설정
@Required
• org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor
• 필수 프로퍼티를 명시할 때 사용
• 지정하려면 먼저 프로퍼티 설정 메서드에 @Required을 선언
package com.cejing.ex;
public class Camera {
private int number;
@Required
public void setNumver(int number){
this.number =number;
}
}
<bean class = "org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
<bean id="camera" class = "Camera"/>
<!-- number 프로퍼티에 @Required 어노페이션 적용
따라서 , number 프로퍼티를 설정하지 않을 경우 예외 발생 -->
<property name ="number" value="1"/>
</bean>
Annotation 설정
@Required
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:annotation-config/>
</beans>
<context:annotation-config>
- RequiredAnnotationBeanPostProcessor : @Required 어노테이션 처리
- AutoWiredAnnotationBeanPostProcessor : @Autowired 어노테이션 처리
- CommonAnnotationBeanPostProcessor : @Resource, @PostConstruct, @PreDestroy 어노테이션 처리
- ConfigurationClassPostProcessor : @Configuration 어노테이션 처리
Annotation 설정
@Autowired
• org.springframework.beans.factory.annotation.AutowiredAnnotationBeanProcessor
• 프로퍼티 자동 설정 기능을 제공
• 생성자, 필드, 메서드의 세 곳에 적용 가능
@Autowired(required=false)
여러 개의 생성자에 @Autowired 어노테이션을 적용할 때에는 한 개의 생성자에 적용된
@Autowired 어노테이션만 required 속성값이 true여야 하며 나머지 생성자에 적용되는
@Autowired 어노테이션의 required 속성값은 false이어야 한다
Annotation 설정
@Qualifier
• org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor
• @Autowired 어노테이션과 함께 사용
• 자동 연결될 빈 객체의 수식어를 값으로 갖는다
package com.cejing.ex;
public class Camera implements Camera{
@Autowired
@Qualifier("main")
private int number;
}
<bean id="camera" class = "Camera"/>
<qualifier value ="main" />
</bean>
Annotation 설정
• org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor
@Resource
• javax.annotation 패키지에 위치
• 필요로 하는 자원을 자동 연결할 때 사용
@PostConstruct / @PreDestroy
• @PostConstruct 의존하는 객체를 설정한 이후에
초기화 작업을 수행할 메서드에 적용
• @PreDestroy 컨테이너에서 개게를 제거하기 전에 호출 될 메서드에 적용
-> 스프링 설정 파일에서 init-mehtod 속성과 destroy-method속성을 이용하여
명시한 메서드와 동일한 시점에서 실행