[스프링 이해와 원리] #4. 스프링 의존성 주입 :: 잡다한 프로그래밍
반응형

1. 기존 UserDao의 의존관계 주입

기존의 Factory를 이용하지 않은 방법으로 new를 통해 UserDao에서 다음과 같이 생성했는데 이 방법은 UserDao가 사용할 구체적인 클래스를 알고 있어야한다는 점이문제가 있다. 왜냐면 UserDao는 ConnectionMaker 인터페이스 뿐만 아니라, DConnectionMaker를 사용하겠다는것 까지 관리하고 있는 셈이다.

public UserDao() {
	connectionMaker = new DConnectionMaker();
}

 

따라서 최종적으로 만들어진 방법이 DaoFactory이다. DaoFactory는 런타임 시점에 UserDao가 사용할 ConnectionMaker타입의 오브젝트를 컨테이너 설정을 통해 결정하고 이를 생성하고 UserDao의 생성자 파라미터로 주입하여 UserDao가 DConnectionMaker와 관계를 가지도록 해준다 이러한 부분이 의존성 주입을 의미하고 UserDao는 ConnectionMaker 인터페이스와만 의존관계를 이루게 된다.

 

이러한 의존성 주입을 할 수 있는 방법은 생성자 외에도 여러 방법이 존재한다.

 

2. 메소드를 이용한 의존관계 주입

수정자(setter) 메소드를 이용한 주입

setter를 이용한 UserDao는 다음과 같다.

private ConnectionMaker connectionMaker;

public void setConnectionMaker(ConnectionMaker connectionMaker){
	this.connectionMaker = connectionMaker;
}

 

 

3. XML을 이용한 Configuration

JAVA 어노테이션 대신 XML을 이용하여 다음과 같이 설정할 수 있다.

@Bean
public ConnectionMaker connectionMaker() {
    return new DConnectionMaker();
}
<bean id="connectionMaker" class="spring...DConnectionMaker"/>

 

setter를 사용한 메소드를 <property>를 통해 다음과 같이 관계를 주입할 수 있다.

<bean id="userDao" class="UserDao">
	<property name="connectionMaker" ref="connectionMaker"/>
</bean>

 

 

반응형

+ Recent posts