[spring] DI 관련 Source 내용
스프링은 객체를 관리한다.
객체를 관리하는 역할을 스프링에 맡긴다.
jar 기반으로 배포된다.
스프링을 사용하기 이전에 스프링이 관리할 클래스를 잘 디자인 해야 한다.
context 이므로 환경설정 파일이 필요하다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jdbc" class="user.dao.UserDAO_JDBC"></bean>
<bean id="spring" class="user.dao.UserDAO_Spring"></bean>
<bean id="ibatis" class="user.dao.UserDAO_iBatis"></bean>
<bean id="mybatis" class="user.dao.UserDAO_MyBatis"></bean>
<bean id="service" class="user.service.UserServiceImpl"></bean>
</beans>
applicationContext.xml
파일을 생성한다.
public static void main(String[] args) {
String[] config = {"applicationContext.xml"};
ApplicationContext context = new ClassPathXmlApplicationContext(config);
}
스프링안에 설정한 다섯개의 객체가 메모리에 올라가 있다.
UserService userService = (UserService) context.getBean("service");
리턴 타입이 object 이므로 캐스팅이 필요하다.
<bean id="service" class="user.service.UserServiceImpl">
<constructor-arg ref="jdbc"/>
</bean>
생성자 주입을 한다.
<bean id="service" class="user.service.UserServiceImpl">
<constructor-arg ref="jdbc"/>
<property name="dao" ref="spring"/>
</bean>
setter
메소드 주입을 한다.
위의 코드는 아래 자바 코드와 역할이 같다.
UserDAO jdbc = new UserDAO_JDBC();
UserDAO spring = new UserDAO_Spring();
UserService service = new UserServiceImpl(jdbc);
((UserServiceImpl)service).setDao(spring);
bean 생성
<bean id="user" class="user.vo.UserVO"/>
user 객체를 출력한다.
String[] config = {"applicationContext.xml"};
ApplicationContext context = new ClassPathXmlApplicationContext(config);
UserVO vo = (UserVO) context.getBean("user");
System.out.println(vo);
실행결과
UserVO [userid=null, username=null, userpwd=null, email=null, phone=null, address=null]
값을 설정한다. 생성자에 값을 전달한다.
<bean id="user" class="user.vo.UserVO">
<constructor-arg value="1" />
<constructor-arg value="2" />
<constructor-arg value="3" />
<constructor-arg value="4" />
<constructor-arg value="5" />
<constructor-arg value="6" />
</bean>
실행결과
UserVO [userid=1, username=2, userpwd=3, email=4, phone=5, address=6]
Namespaces
namespaces 탭에서 p 체크박스를 체크한다.
체크를 하면 p 어트리뷰트가 활성화됨
<bean id="user" class="user.vo.UserVO"
p:userid="java01" p:phone="010"
p:username="홍길동" p:email="email">
</bean>
실행결과
UserVO [userid=java01, username=홍길동, userpwd=null, email=email, phone=010, address=null]
'Programming > Spring' 카테고리의 다른 글
[spring] AOP (Aspect Oriented Programming) (0) | 2016.04.21 |
---|---|
[spring] Annotation 기반 설정 (0) | 2016.04.20 |
[spring] 데이터베이스 연동 (0) | 2016.04.19 |
[spring] DI(Dependency Inversion) 개념 (0) | 2016.04.19 |
[Spring] 설정 파일 (0) | 2016.04.18 |
댓글