spring로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

spring로 검색한 결과
등록일:2008-03-16 16:12:02
작성자:
제목:Inversion of Control, 제어 역행화 = Dependency Injection, 연관성 삽입


Inversion of Control

  : 컨테이너에 대한 의존성은 낮추면서도, 컴포넌트들을 잘 엮어보기 위한 방법.

 

 
  위의 그림에서 ServiceHelper.getHelloService()를 통해 HelloService를 찾았다고 하자.
  HelloService는 Hello 인터페이스를 필드로 가지고 있고, Hello를 구현한 것은 HelloLab과
  HelloWorld가 있다.
 
 
 
  다음은 HelloService의 소스이다.

  public class HelloService {
         private Hello hello;
         public void setHello(Hello h) {
              hello = h;
         }
 
         public String get() {
              return hello.get();
         }
  }
 
  setHello의 매개변수로 HelloLab이냐 HelloWorld냐에 따라서 get 메소드의 결과가 달라질
  것이다. 그럼, setHello 메소드는 누가 무엇을 매개 변수로 호출할것인가?
 
  spring 프레임워크에서는 다음과 같이 별도의 xml파일을 이용하여 지정해두면, 컨테이너가
  이를 해석하여 초기화한다. 이러한 것을 dependency injection이라고 표현한다.
 
  <beans>
        <bean id="helloLab" class="HelloLab"/>
        <bean id="helloWorld" class="HelloWorld"/>
 
        <bean id="helloService" class="HelloService">
                <property name="hello">
                      <ref local="helloWorld"/>
                </property>
        </bean>
  </beans>
 
  위와 같이 set 메소드를 이용하는 방법외에 생성자를 이용하는 방법, 메소드를 이용하는 방법도 있다.