Polpid's World

[Spring]Dependency Injection 본문

Development/Java

[Spring]Dependency Injection

폴피드 2012.03.21 08:38
Bean Definition 파일에 정의 한 dependency 관련 정보를 바탕으로 객체 사이의 의존 관계를 Container가 자동적으로 연결해주는것을 말한다. Container API 에 종속되는것을 줄일수 있다.
- Setter Injection : Setter 메소드 구현을 통해 해당 객체 초기화시 Container로 부터 참조관계에 놓인 특정 리소스를 할당받음.
- Constructor Injection : Constructor 구현을 통해 특정 객체 초기화 시 Contatiner로부터 참조 관계에 놓인 특정 리소스를 할당 받는 방법

-- Setter Injection 예
[속성 정의 파일 ] 
  1. <bean id="“movieService&quot;" class="….MovieServiceImpl">
  2.    <property name="“genreService&quot;" ref="“genreService&quot;/"></property></bean>
  3.    <bean id="”genreService”" class="”....GenreServiceImpl”/">
  4. </bean>
[구현클래스 ] 
  1. public class MovieServiceImpl implements MovieService{
  2.       DepBean genreService;
  3.       public void setGenreService(GenreService genreService) {
  4.             this.genreService = genreService;
  5.       }
  6. //중략
  7. }
-- Constructor Injection 예
  1. <bean id="“movieService" class="“org.anyframe.exercise.moviefinder.service.impl.MovieServiceImpl">
  2.      <constructor-arg ref="“movieDao/"></constructor-arg></bean>   
  3.      <bean id="movieDao" class="org.anyframe.exercise.moviefinder.service.impl.moviedao"/>
  4. </bean>
[구현클래스 ] 
  1. public class MovieServiceImpl implements MovieService {
  2.       private MovieDao movieDao;
  3.       public MovieServiceImpl(MovieDao movieDao) {
  4.            this.movieDao = movieDao;
  5.      }
  6. }
% Circular Dependencies
  1. <bean id="beanFirst" class="test.BeanFirst">
  2.       <constructor-arg ref="beanSecond"></constructor-arg>
  3. </bean>
  4. <bean id="beanSecond" class="test.BeanSecond">
  5.       <constructor-arg ref="beanFirst"></constructor-arg>
  6. </bean>
 두개의 서로다른 Bean이 constructor-arg 를 이용해 서로의 Bean을 참조하는 경우에 BeanCurrentlylnCreationException 발생


0 Comments
댓글쓰기 폼