본문 바로가기

Spring

[spring] spring 기초

빈의 설정 정보 관리 파일이 xml이라고 보면

 

xml에서는

 

<bean id ="UserDAO" class="net.javajigi.user.dao.MySQLUserDAO" />

 

<bean id="userService" class="net.javajigi.user.service.UserServiceImple">

  <property name="userDAO">

      <ref local="userDAO"/>

  </property>

</bean>

 

이런식으로 설정이 되어 있다.

 

실제 소스에서는

 

public class UserServiceImpl implements USerService {

   private UserDAO userDAO;

 

public void setUserDao(UserDao newUSerDAO) {

    this.userDAO = newUSERDAO;

}

 

 

int result = userDAO.insert(user);

 

...

 

 

이처럼 UserDAO에 대한 정의나 생성이 아무것도 없이 사용 할 수 있는데 xml에 설정되어 있기 때문이다.

 

bean태그 아래 property 태그의 이름이 userDAO라면 위 예제 클래스의 setUserDAO를 통하여 자동으로

 

xml에서 설정되어 있는 MySQLUSerDAO의 객체를 해당 인스턴스에 전달하게 되는 것이다.

 

이렇게 의존관계가 형성될 때 setter메소드를 이용하는 것을 Setter Injection이라고 한다.

 

 

그렇다면 Construcetor Injection은?

 

public UserServiceImpl (UserDAO newUserDAO) {

 this.userDAO = newUSerDao;

}

 

 

<bean id=....>

   <constructor-arg>

      <ref local="userDAO" />

   </constructor-arg>

</bean>

 

이렇게..사용된다