이 기사를 읽기 전에 먼저 " Spring 's IOC 및 AOP 및 코드 예제에 대한 간단한 이해 및 코드 예제 " 를 참조하여 봄의 IOC 및 AOP에 대해 배울 수 있습니다. 주제에 접근합시다. 이 기사는 봄에 자바 콩을 정의하고로드하는 방법을 소개합니다.
비즈니스 시나리오
또한 사람들이 운전하는 예이기도합니다. 먼저 자동차 인터페이스와 2 개의 구현 벤츠와 BMW를 정의한 다음 자동차 인터페이스에 따라 개인 클래스를 정의하십시오.
공개 인터페이스 카 {void go ();} 공개 클래스 벤츠는 {public void go () {System.out.println ( "Benz Go ...")을 구현합니다. }} Public Class BMW는 CAR {public void go () {System.out.println ( "bmw go ...")을 구현합니다. }} 공개 클래스 사람 {문자열 이름 = ""; 자동차 자동차 = NULL; 공공 차량 getCar () {반환 자동차; } public void setcar (자동차 자동차) {this.car = 자동차; } 공개 사람 (문자열 이름) {this.name = 이름; } public void drive () {system.out.println (name+"drive ..."); 뱃짐(); }}Person 클래스에서 우리는 자동차 객체 가이 클래스의 종속 객체이며 생성자 방법을 통해 개인 클래스에 주입해야 함을 알 수 있습니다. 위의 코드에는 여전히 봄의 그림자가 없습니다. 스프링이 어떻게 그것을 주입하는지 봅시다.
스프링 종속성을 추가하십시오
오늘날 많은 프로젝트가 Maven에 의존성을 관리하기 위해 적용 되며이 프로젝트에서도 마찬가지입니다. pom.xml에 종속성 노드를 추가하겠습니다
<pectionency> <groupId> org.springframework </groupId> <artifactid> Spring-Core </artifactid> <버전> 3.2.6.Release </version> </dependency> <prectionency> <groupid> org.springframework </groupid> <artifactid> spring-beans </artifactid> <버전 </version> 3.6. release <groupid> org.springframework </groupid> <artifactid> spring-context </artifactid> <bersion> 3.2.6. release </version> </dependency> <prectionemency> <groupid> org.springframework </groupid> <artifactid> spring-context </expendency> <버전> 3.2.6.2.6.release <groupid> org.springframework </groupid> <artifactid> Spring-Context-Support </artifactid> <bersion> 3.2.6. Release </version> </fectionency>
이러한 종속성 노드를 pom.xml 파일의 종속성 노드에 넣으면 Eclipse는 관련 패키지를 기본 위치로 자동 다운로드합니다.
콩을 수동으로 정의하고 조립합니다
프로젝트의 루트 디렉토리에서 다음 내용으로 bean.xml이라는 새 XML 파일을 만듭니다.
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype beans public "-// spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtd"> <property name = "car"ref = "car"/> </bean> </beans>
위의 XML 파일은 먼저 ID가있는 Bean을 자동차로, ID가있는 Bean을 Tom으로 정의합니다. 자동차는 Tom의 종속성이며 <property name = "car"ref = "car"를 통해 Tom의 자동차 속성에 수동으로 조립됩니다.
응용 프로그램 객체간에 협업 관계를 만드는 동작을 배선이라고하며 이는 객체 주입에 대한 의존성의 본질이기도합니다.
다음으로, 우리는 기본 메소드에서 응용 프로그램 컨텍스트 객체를 인스턴스화하고 Bean에서 Tom 노드를 얻습니다.
공개 클래스 앱 {public static void main (String [] args) {ApplicationContext context = new ClassPathXmlApplicationContext ( "bean.xml"); 사람 tom = (사람) context.getBean ( "Tom"); tom.drive (); }}프로그램을 실행하면 출력 결과는 다음과 같습니다.
톰은 운전 중입니다 ... BMW가 ...
자동 조립
다시 반복하면, 응용 프로그램 객체간에 협업 관계를 만드는 동작을 객체를 인스턴스화하는 과정이 아니라 배선이라고합니다. 위의 XML 파일에서 <속성 이름 = "car"ref = "car" />로 종속성 객체를 조립했지만 응용 프로그램의 지속적인 개발로 XML 구성 파일은 점점 더 복잡해집니다. 우리가 ref = "자동차"를 통해 ID 차량과 콩을 연결하는 방식은 뒤쳐지기 시작했습니다. 다음으로 스프링이 자동 조립 빈을 구현하는 방법을 소개하겠습니다.
자동 조립의 유형
봄에는 4 가지 조립 전략이 있습니다. 이 기사의 복잡성을 줄이기 위해 일반적으로 사용되는 두 가지 전략 인 Byname 방법과 Bytype 방법을 소개합니다. 이름에서 알 수 있듯이 ByName 메소드는 속성의 이름과 Bean의 ID가 동일한 지 확인하는 것입니다. 이 예에서 Person 클래스에는 CAR이라는 속성이 있습니다. 클래스 또는 변경 속성이 자동 어셈블리로 설정되고 조립 정책이 이름 인 경우 Spring은 ID 차량이있는 Bean을 찾습니다 (동일한 이름이어야 함). Bytype 방법은 유형이 동일한 지 비교하는 것입니다. 이 예에서, 개인 클래스 또는 개인 클래스의 자동차 속성이 자동 조립으로 설정되고 조립 정책이 ByType 인 경우, 자동차 속성은 자동차 유형이므로 Spring은 자동차 유형 자동차 또는 자동 조립시 서브 클래스를 찾습니다.
XML을 사용하여 자동 어셈블리를 구현하십시오
다음으로 코드를 수정하고 XML 구성 방법을 사용하여 자동 어셈블리를 달성합니다.
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype beans public "-// spring // dtd bean // en" "http://www.spramframework.org/dtd/spring-beans.dtd"> <beans> <Bean id = "car"> <생성자-arg 값 = "tom"/> </bean> </beans>
개인 수업에는 수정이 필요하지 않습니다.
먼저, <propertyname = "car"ref = "car"코드 라인을 제거했습니다. 그런 다음 ID가있는 Bean에 Autowire = "ByName"을 추가하고 이름별로 종속성을 자동으로 조립하도록 설정합니다. 사람의 물체를 얻을 때 사람의 모든 속성 이름은 특별한 의미를 갖습니다. Spring은 Person 클래스에서 CAR이라는 또 다른 속성을 모니터링하고 구성 파일에서 ID 차량이있는 Bean을 발견하여 자동으로 개인의 자동차 속성에 조립했습니다.
주석을 통한 자동 조립
Bean.xml에 대해 다음과 같은 수정을합니다
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype beans public "-// spring // dtd bean // en" "http://www.spramframework.org/dtd/spring-beans.dtd"> <beans default-autowire ="byname "> <tom"> <id id = "id id ="id id = "id id ="id id = "id id =" <생성자-arg 값 = "tom"/> </bean> </beans>
ID Tom이있는 Bean의 Autowire = "ByName"을 삭제 한 다음 Node Bean에 속성 Default-Autowire = "ByName"을 추가하여 파일에 정의 된 모든 Bean의 자동 어셈블리 메소드의 기본값을 ByName으로 설정합니다. 그런 다음 개인 클래스를 수정하고 자동차의 세터 메소드에 @autowired 주석을 추가하여 스프링에 자동으로 조립되도록 알립니다. 코드를 다시 실행하고 출력 결과는 변경되지 않았습니다.
@autowiredpublic void setcar (자동차 자동차) {this.car = car;}주석을 통해 자동 어셈블리를 구현하는 경우 먼저 Bean의 루트에 기본 자동 어셈블리 메소드를 설정 한 다음 구성 파일에서 자동 어셈블리가 필요한 각 Bean의 Autowire 속성을 구성 할 필요가 없습니다 (메소드가 기본값과 일치하지 않는 경우 기본 자동 어셈블리 방법을 사용하여 별도로 구성 할 수 있습니다). 주석 방법은 더 섬세하며 자동 조립 해야하는 콩의 속성 레벨을 제어 할 수 있습니다.
위의 모든 코드에서 org.zdk.springproj1.bmw 클래스를 개인 클래스의 종속성으로 사용합니다. 비즈니스 요구로 인해 Person 클래스가 BMW를 운전할 필요가없는 경우, Java 코드를 수정하지 않고 구성을 Org.zdk.springproj1.benz로 변경해야합니다. 이것은 IOC 컨테이너로서의 스프링의 힘입니다.
요약
위는이 기사에서 스프링 정의 및 어셈블리 콩에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Java Spring Annotation Configuration Bean 인스턴스 코드 분석
스프링 구성 사용의 수명주기에 대한 자세한 설명
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!