티스토리 뷰
Spring DI 에 인자를 전달하는 것과 같이 어떤 객체를 주입할 수도 있다.
객체 주입에는 크게 2가지 방법이 있다.
1. 생성자 방식(constructor-arg 이용)
◎JdbcDao
package test.exam03;
public class JdbcDao {
public JdbcDao() {
}
public int insert() {
System.out.println("insert 작업");
return 0;
}
public void delete() {
System.out.println("delete 작업");
}
}
◎JdbcService
package test.exam03;
public class JdbcService {
private JdbcDao jdbcDao;
public JdbcService() {
}
public JdbcService(JdbcDao jdbcDao) {
this.jdbcDao = jdbcDao;
}
public void serviceTest() {
jdbcDao.insert();
jdbcDao.delete();
}
}
◎exam03.xml
<?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 = "service" class = "test.exam03.JdbcService">
<constructor-arg>
<ref bean = "jdbcDao"></ref>
</constructor-arg>
</bean>
</beans>
◎ExamMain
package test.exam03;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class ExamMain {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("/src/test/exam03/exam03.xml");
JdbcService service = (JdbcService)context.getBean("service");
service.serviceTest();
}
}
2. 프로퍼티 방식(Property 이용)
◎IbatisDao
package test.exam04;
public class IbatisDao {
public IbatisDao() {
}
public void insertDB() {
System.out.println("insert");
}
public void updateDB() {
System.out.println("update");
}
}
◎IbatisService
package test.exam04;
public class IbatisService {
private IbatisDao ibatisDao;
public IbatisService() {
// TODO Auto-generated constructor stub
}
public void setIbatisDao(IbatisDao ibatisDao) {
this.ibatisDao = ibatisDao;
}
public void daoTest() {
System.out.println("Start");
ibatisDao.insertDB();
ibatisDao.updateDB();
System.out.println("End");
}
}
◎exam04.xml
<?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 = "ibatis" class = "test.exam04.IbatisDao"></bean>
<bean id = "service" class = "test.exam04.IbatisService">
<property name="ibatisDao" ref = "ibatis"></property>
</bean>
</beans>
이때, 주입하는 객체는 bean으로 이미 등록되어 있어야 property 사용이 가능하며, property name 은 해당 객체의 맴버 변수의 이름과 동일하다.
◎main
package test.exam04;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class ExamMain {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("/src/test/exam04/exam04.xml");
IbatisService service = (IbatisService)context.getBean("service");
service.daoTest();
}
}
3. xml name space를 활용하는 방법
xmlns를 사용하면 <property> 태그를 사용하지 않고도 객체를 주입할 수 있다.
2번과 동일한 예제 코드를 활용하며, xml 파일만 수정하면 된다.
◎exam04.xml
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id = "ibatis" class = "test.exam04.IbatisDao"></bean>
<bean id = "service" class = "test.exam04.IbatisService"
p:ibatisDao-ref="ibatis">
</bean>
</beans>
반응형
'[JAVA] > Spring' 카테고리의 다른 글
[Spring] bean 객체의 Life Cycle 관리 (0) | 2021.06.14 |
---|---|
[Spring] Bean 객체의 범위 (0) | 2021.06.14 |
[Spring] 싱글톤 패턴 객체 접근 (0) | 2021.06.14 |
[Spring] Spring DI 인자 전달 (0) | 2021.06.14 |
[Spring] 스프링의 DI(Dependency Injection) 의존성 주입 (0) | 2021.06.14 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 이탈리안 레스토랑
- await
- react
- 인천 구월동 이탈리안 맛집
- redux
- Promise
- 파니노구스토
- Async
- 정보보안기사 #실기 #정리
- 맛집
- AsyncStorage
- react-native
- redux-thunk
- javascript
- 인천 구월동 맛집
- Total
- Today
- Yesterday