- DI( dependency injection )
- 의존관계 주입
A {
B b;
b = new B();
...
}
A클래스에서 B클래스를 new로 만들어 사용한다.
A클래스와 B클래스는 의존관계가 있다 라고 ..
주입은 외부에서 이런 의존성 관계를 설정하는 것 ..
주입의 2가지 방법>
2) setter메소드로 주입
파일 목록
(2) MemberDao.java
(3) InsertController.java
(4) ListController.java
(5) test02.xml
( Spring 인 경우 S 자가 보인다. )
(1) TestMain.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestMain {
public static void main(String[] args) {
String res="test/di2/test02.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(res);
InsertController insert =(InsertController)context.getBean("insert");
insert.execute();
ListController list1= (ListController)context.getBean("list1");
list1.execute();
}
}
(2) MemberDao.java
; 간단한 출력 만듬.
; 멤버변수 url 선언.
public class MemberDao {
private String url;
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void insert(String id){
System.out.println(id + "님을 추가했습니다.");
}
public void update(String id){
System.out.println(id + "님을 수정했습니다.");
}
public void delete(String id){
System.out.println(id + "님을 삭제했습니다.");
}
public void getinfo(String id){
System.out.println(id + "님을 조회했습니다.");
}
}
(3) InsertController.java
; setter 를 통한 주입
public class InsertController {
private MemberDao dao;
public void setDao(MemberDao dao) {
this.dao = dao;
}
public void execute(){
dao.insert("Hong Jil Dong");
}
}
(4) ListController.java
; 생성자 통한 주입
public class ListController {
private MemberDao dao;
public ListController(){}
public ListController(MemberDao dao){
this.dao = dao;
}
public void execute(){
dao.getinfo("홍길동");
}
}
(5) test02.xml
; id는 고유한 값.
; name id의 별칭
; class Bean클래스 이름.패키지.클래스이름의 완전한 형태
; singleton 기본이 싱글톤
; 자식태그
생성자 통한주입 <constructor-arg>
setter 통한 주입 <property>
; 위에 생성된것을 참조할때는 ref
; 일반 변수에 값도 주입
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!-- 스프링에 주입하기 -->
<!-- MemberDao타입의 dao객체를 만들어라.(스프링은 기본적으로 싱글톤으로 만든다.) -->
<bean id="memdao" class="test.di2.MemberDao">
<!-- 단순 스트링 값 은 value -->
<property name="url" value="localhost"/>
</bean>
<bean id="insert" class="test.di2.InsertController">
<!-- setter로 객체 주입하기 -->
<!-- 위에서 만든 것(생성된것)을 참조할때는 ref -->
<property name="dao" ref="memdao"/>
</bean>
<bean id="list1" class="test.di2.ListController">
<!-- 생성자로 객체 주입하기 -->
<constructor-arg ref="memdao"/>
</bean>
</beans>
'WEB > Spring3.0' 카테고리의 다른 글
SPRING3.0 #05( init-method, destroy-method, scope ) (0) | 2013.01.27 |
---|---|
SPRING3.0 #04( 의존관계 ) (0) | 2013.01.27 |
SPRING3.0 #02( new사용과 spring bean사용하기. ) (0) | 2013.01.27 |
SPRING3.0 #01( Mybatis와 SPRING 관련 LIB ) (0) | 2013.01.27 |
SPRING3.0 #00( 설치 ) - STS, eclipse 사용 (0) | 2013.01.27 |