spring 의 자동 조립
인용 하 다.
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 의 방법 과 결합 하여 작업량 을 최대한 낮 추 는 동시에 응용 가능 한 유지 도 를 확보 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.