spring 의 자동 조립

응용 프로그램 에서, 우 리 는 자주 < ref > 라벨 을 사용 하여 자바 빈 에 의존 하 는 대상 을 주입 합 니 다.그러나 대형 시스템 에 대해 이 조작 은 우리 의 대량의 자원 을 소모 할 것 입 니 다. 우 리 는 시스템 의 < ref > 라벨 을 만 들 고 유지 하 는 데 많은 시간 과 정력 을 들 여야 합 니 다.실제로 이런 방식 도 다른 형식 에서 응용 프로그램의 복잡성 을 증가 시 킬 수 있다. 그렇다면 이 문 제 를 어떻게 해결 할 것 인가?Spring 은 우리 에 게 자동 조립 체 제 를 제공 했다. 비록 이런 체 제 는 완선 되 지 않 지만 응용 에서 < ref > 라벨 을 결합 하면 우리 의 노동 강 도 를 크게 줄 일 수 있다.앞에서 언급 한 바 와 같이, Bean 을 정의 할 때, < bean > 탭 에 autowire 속성 이 있 습 니 다. 우 리 는 그것 을 지정 하여 용기 가 관 리 를 받 는 JavaBean 에 자동 으로 의존 대상 을 주입 하도록 할 수 있 습 니 다. 의 autowire 속성 은 다음 과 같은 여섯 가지 수치 가 있 습 니 다. 그들의 설명 은 다음 과 같 습 니 다.
인용 하 다.
1. No: 자동 조립 을 사용 하지 않 습 니 다.Autowire 의 기본 값 입 니 다.2. by Name: 자바 빈 이 의존 하 는 대상 을 속성 이름 으로 찾 아 주입 합 니 다.예 를 들 어 클래스 Computer 에 속성 printer 가 있 습 니 다. autowire 속성 을 by Name 으로 지정 하면 Spring IoC 용 기 는 설정 파일 에서 id / name 속성 이 printer 인 bean 을 찾 은 다음 Seter 방법 으로 주입 합 니 다.3. by Type: 속성 유형 을 통 해 자바 빈 이 의존 하 는 대상 을 찾 아 주입 합 니 다.예 를 들 어 클래스 Computer 에 속성 printer 가 있 고 유형 은 Printer 입 니 다. 그러면 autowire 속성 을 by Type 으로 지정 하면 Spring IoC 용 기 는 Class 속성 이 Printer 인 bean 을 찾 아 Seter 방법 으로 주입 합 니 다.4. constructor: by Type 과 마찬가지 로 유형 을 통 해 의존 대상 을 찾 습 니 다.by Type 과 의 차 이 는 Seter 방법 으로 주입 하 는 것 이 아니 라 구조 자 를 사용 하여 주입 하 는 것 이다.5. autodetect: by Type 과 constructor 사이 에서 자동 으로 주입 방식 을 선택 합 니 다.6. default: 상위 탭 < beans > 의 default - autowire 속성 으로 확 정 됩 니 다.
메모: bean 을 설정 할 때 < bean > 탭 에서 Autowire 속성의 우선 순 위 는 상위 탭 보다 높 습 니 다. 즉, 상위 탭 에서 default - autowire 속성 을 by Name 으로 정의 하고 < bean > 에서 by Type 으로 정의 할 때 Spring IoC 용 기 는 < bean > 탭 의 배 치 를 우선 사용 합 니 다.다음은 하나의 예 를 통 해 응용 에서 자동 조립 을 어떻게 사용 하 는 지 설명 한다 (공정 코드 는 루틴 3.2 참조).새로운 자바 프로젝트 를 만 들 고 Spring 개발 능력 을 추가 한 후 ioc. test 패 키 지 를 만 들 고 컴퓨터 류 (Computer), 호스트 류 (Host), 디 스 플레이 류 (Dispaly) 를 각각 만 들 고 호스트 유형의 속성 host 와 Display 형식의 속성 display 를 컴퓨터 류 에 추가 하 며 run 방법 을 추가 하여 컴퓨터 가 '실행' 할 수 있 도록 합 니 다.속성 코드 는 다음 과 같 습 니 다. 컴퓨터 클래스:
package ioc.test;
 
 /**
  * @author zhangyong
 */
 public class Computer {
     
    private Host host;
    private Display display;
    //      
    public void run(){
        System.out.println("  ,    ,    !");
        System.out.print("   "+host.run()+",");
        System.out.println(display.run());
    }
    //Geter Seter  ,  
}
호스트 클래스 에 run 방법 을 추가 하여 호스트 도 '실행' 할 수 있 도록 합 니 다. 코드 는 다음 과 같 습 니 다.
package ioc.test;

public class Host {
    public String run(){
        return "    ,    !";
    }
}
디 스 플레이 클래스 에 run 방법 을 추가 합 니 다. 다음 과 같 습 니 다.
package ioc.test;

public class Display {
    public String run(){
        return "     ,    !";
    }
}
다음은 Spring 의 설정 파일 을 수정 하여 IoC 용기 가 우리 의 '컴퓨터' 에 '호스트' 와 '모니터' 를 자동 으로 설치 하도록 합 니 다.각각 두 개의 bean, host, display 를 설정 합 니 다.컴퓨터 1 이라는 bean 을 다시 설정 합 니 다. autowire 속성 은 by Name 으로 설정 하고, 컴퓨터 1 과 컴퓨터 3, autowire 속성 은 각각 by Type 과 default 로 설정 합 니 다. 마지막 으로 < beans > 탭 의 default - autowire 속성 은 autodetect 로 설정 합 니 다.이로써 설정 작업 이 완료 되 었 습 니 다. 컴퓨터 bean 에 의존 대상 host 와 display 를 명시 적 으로 주입 하지 않 았 음 을 알 수 있 습 니 다.설정 코드 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
 <beans    default-autowire="autodetect">
     <bean id="computer1" class="ioc.test.Computer" autowire="byName"></bean>
     <bean id="computer2" class="ioc.test.Computer" autowire="byType"></bean>
     <bean id="computer3" class="ioc.test.Computer" autowire="default"></bean>
     
     <bean id="host" class="ioc.test.Host"></bean>
     <bean id="display" class="ioc.test.Display"></bean>    
 </beans>
이제 테스트 클래스 를 만들어 서 Spring 을 테스트 할 수 있 습 니 다. 정말 우리 가 필요 로 하 는 bean 을 자동 으로 조립 해 주 었 습 니 다.코드 는 다음 과 같 습 니 다.
package ioc.test;
 
 //import  
 public class TestMain {
 
     public static void main(String[] args) {
         ApplicationContext ac = new ClassPathXmlApplicationContext(
                 "applicationContext.xml");
         //byName
        Computer computer1 = (Computer)ac.getBean("computer1");
        System.out.println("autowire=\"byName\":");
        computer1.run();
        
        //byType
        Computer computer2 = (Computer)ac.getBean("computer2");
        System.out.println("autowire=\"byType\":");
        computer2.run();
        
        //default
        Computer computer3 = (Computer)ac.getBean("computer3");        
        System.out.println("autowire=\"default\":");
        computer3.run();
    }
}
이 종 류 를 실행 하고 출력 결 과 는 다음 과 같 습 니 다.
인용 하 다.
실행 결 과 를 통 해 알 수 있 듯 이 Spring IoC 용 기 는 우리 에 게 자동 으로 설 치 된 '컴퓨터' 로 설정 파일 이 훨씬 간결 해 졌 다.그러나 자동 조립 은 완전무결 한 것 이 아니다. 우 리 는 by Name 을 사용 하 든 by Type 을 사용 하 든 Spring 이 반드시 자바 빈 이 의존 하 는 대상 을 정확하게 찾 아 줄 수 있 는 것 은 아니다.또한, 자동 조립 을 사용 하면 Spring 프로필 의 가 독성 도 크게 떨 어 집 니 다. 우 리 는 bean 간 의 의존 관 계 를 쉽게 알 수 없 기 때문에 프로그램의 유지 가능성 을 어느 정도 낮 출 수 있 습 니 다.따라서 자동 조립 을 사용 할 때 이해득실 을 따 지고 합 리 적 으로 ref 의 방법 과 결합 하여 작업량 을 최대한 낮 추 는 동시에 응용 가능 한 유지 도 를 확보 해 야 한다.

좋은 웹페이지 즐겨찾기