객체간의 의존관계 설정.

JAVA/Java_DataBase 2013.10.21 22:56

public class Excutor {


public static void main(String[] args) {

// TODO Auto-generated method stub

ApplicationContext context = new FileSystemXmlApplicationContext("src/springtest/xmlPack/testxml.xml");

jdbcService test = (jdbcService)context.getBean("service");

test.serviceTest();

}

}


public class jdbcDao {

public jdbcDao(){}

public int insert(){

System.out.println("insert작업");

return 0;

}

public int delete(){

System.out.println("delete작업");

return 0;

}

}



public class jdbcService {

private jdbcDao jdbc;

public jdbcService (){

}

public jdbcService(jdbcDao jdbc){

this.jdbc = jdbc;

}

public void serviceTest(){

jdbc.insert();

jdbc.delete();

}

}


<?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="testDao" class="springtest.testDao">

<constructor-arg value="testEEEE"></constructor-arg>

</bean>

<bean id="jdbcDao" class="springtest.jdbcDao">

</bean>

<bean id="service" class="springtest.service.jdbcService">

<constructor-arg ref="jdbcDao"></constructor-arg>

</bean>

</beans>



어려워 보일수도 있는데 xml설정을 보면 대충 답을 알수가 있다. 
jdbcDao라는 빈을 선언하고 id="service"를 보면 jdbcService클래스에 생성자 인수로 jdbcDao의 객체를 초기화로 집어넣는 것을 볼 수 있다. 이또한 constructor-arg를 아무것도 하지 않으면 기본 생성자로 생성이 되게 된다.

위와 같은 설정으로 jdbcDao와 jdbcService는 의존관계를 가지는 설정이 되게 된다.
만약 객체가 아니라 값일경우에는 constructor-arg ref가 아니라 value를 사용하면 된다.

또는 property로 설정이 가능한데
setXXX식의 매소드가 추가되어서 처리가 가능하다

public class jdbcService {

private jdbcDao jdbc;

public setjdbcDao(jdbcDao jdbc){

this.jdbc = jdbc;

}

public void serviceTest(){

jdbc.insert();

jdbc.delete();

}

}

<property name="jdbcDao" ref="jdbcDao"></property>

이런식으로 처리가 가능해진다.

그리고 한번만 그 객체를 쓴다고 가정하였을 경우에는

위 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="jdbcDao" class="springtest.jdbcDao">

</bean>

<bean id="service" class="springtest.service.jdbcService">

<property name="jdbcDao">

<bean id="jdbcDao" class="springtest.jdbcDao"></bean>

</property>

</bean>

</beans>

단점은 맨위에 있는 jdbcDao Bean과 다르게 여러번 사용이 불가능하며 임의로 다른 곳에서 긁어다가 쓸수가 없다는것이다 단지 지금위의 xml에 정의된대로 service라는 것에만 가능하다는 것이다.




저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15


티스토리 툴바