Spring 은 IoC 의 다양한 방식 의 소결 을 실현 한다.

22092 단어 springioc
반전 을 제어 하 는 IoC(Inversion of Control)는 설계 사상 으로,DI(주입 의존)는 IoC 를 실현 하 는 한 방법 이 며,DI 는 IoC 의 또 다른 표현 일 뿐 이라는 시각 도 있다.IoC 가 없 는 프로그램 에서 우 리 는 대상 을 대상 으로 프로 그래 밍 대상 을 만 드 는 것 과 대상 간 의 의존 관 계 를 사용 하여 프로그램 에서 대상 의 생 성 을 프로그램 이 스스로 제어 하고 반전 을 제어 한 후에 대상 의 생 성 을 제3자 에 게 이전 합 니 다.개인 적 으로 반전 을 제어 하 는 것 은 의존 대상 을 얻 는 방식 으로 반전 하 는 것 이 라 고 생각 합 니 다.

IoC 는 Spring 프레임 워 크 의 핵심 콘 텐 츠 로 다양한 방식 으로 완벽 하 게 IoC 를 구현 해 XML 설정 을 사용 할 수도 있 고 주 해 를 사용 할 수도 있 으 며,새 버 전의 Spring 도 제로 설정 으로 IoC 를 구현 할 수 있다.Spring 용 기 는 초기 화 할 때 프로필 을 먼저 읽 고 프로필 이나 메타 데이터 에 따라 생 성 및 조직 대상 을 용기 에 저장 하 며 프로그램 사용 시 Ioc 용기 에서 필요 한 대상 을 꺼 냅 니 다.

XML 방식 으로 Bean 을 설정 할 때 Bean 의 정의 정 보 는 분 리 를 실현 하 는 것 이 고 주해 방식 으로 두 가 지 를 하나 로 합 칠 수 있다.Bean 의 정의 정 보 는 직접 주해 형식 으로 실현 류 에 정의 되 어 0 설정 의 목적 을 달성 했다.
1.XML 설정 방식 으로 IOC 구현
프로젝트 에서 도서 에 대한 데이터 접근 서 비 스 를 완성 해 야 한다 고 가정 하면 저 희 는 IBookDAO 인터페이스 와 Bookdao 실현 류 를 정 의 했 습 니 다.
IBookDAO 인 터 페 이 스 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc01;

/**
 *         
 */
public interface IBookDAO {
 /**
  *     
  */
 public String addBook(String bookname);
}
Bookdao 구현 클래스 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc01;

/**
 *          
 */
public class BookDAO implements IBookDAO {

 public String addBook(String bookname) {
  return "    "+bookname+"  !";
 }
}
Maven 프로젝트 의 pom.xml 는 다음 과 같 습 니 다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>com.zhangguo</groupId>
 <artifactId>Spring051</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>Spring051</name>
 <url>http://maven.apache.org</url>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <spring.version>4.3.0.RELEASE</spring.version>
 </properties>
 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <scope>test</scope>
   <version>4.10</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${spring.version}</version>
  </dependency>
  <dependency>
   <groupId>org.aspectj</groupId>
   <artifactId>aspectjweaver</artifactId>
   <version>1.8.9</version>
  </dependency>
  <dependency>
   <groupId>cglib</groupId>
   <artifactId>cglib</artifactId>
   <version>3.2.4</version>
  </dependency>
 </dependencies>
</project>

비 즈 니스 클래스 BookService 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 *      
 */
public class BookService {
 IBookDAO bookDAO;
 
 public BookService() {
  //  
  ApplicationContext ctx=new ClassPathXmlApplicationContext("IOCBeans01.xml");
  //      id bookdao bean
  bookDAO=(IBookDAO)ctx.getBean("bookdao");
 }
 
 public void storeBook(String bookname){
  System.out.println("    ");
  String result=bookDAO.addBook(bookname);
  System.out.println(result);
 }
}

 용기 의 프로필 IOCBeans 01.xml 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd">
 <bean id="bookdao" class="com.zhangguo.Spring051.ioc01.BookDAO"></bean>
</beans>
테스트 클래스 Test 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc01;

public class Test {
 @org.junit.Test
 public void testStoreBook()
 {
  BookService bookservice=new BookService();
  bookservice.storeBook("《Spring MVC        》");
 }
}
실행 결과:

2.Spring 주해 설정 IOC 사용
이전 예 는 전통 적 인 xml 설정 을 사용 하여 IOC 를 완성 한 것 입 니 다.내용 이 많 으 면 설정 에 많은 시간 이 걸 립 니 다.주 해 를 통 해 작업량 을 줄 일 수 있 지만 주 해 를 한 후에 수정 하 는 것 이 번 거 롭 고 우연 도가 증가 할 수 있 으 므 로 필요 에 따라 적당 한 방법 을 선택해 야 합 니 다.
2.1 BookDAO 수정 

package com.zhangguo.Spring051.ioc02;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

/**
 *          
 */
@Component("bookdaoObj")
public class BookDAO implements IBookDAO {

 public String addBook(String bookname) {
  return "    "+bookname+"  !";
 }
}

클래스 에 주석 Component 를 추 가 했 습 니 다.클래스 의 시작 부분 에@Component 주 해 를 사 용 했 습 니 다.Spring 용기 에 의 해 인식 되 고 Spring 을 시작 하면 자동 으로 용기 관리 Bean 으로 전 환 됩 니 다.
Spring 은@Component 를 제외 하고 DAO,Service,Controller 에 대한 주석 에 대응 하 는 3 가지 기능 기본 과@Component 등 효과 적 인 주 해 를 제공 합 니 다.
1:@Repository 는 DAO 구현 클래스 에 대한 설명 에 사 용 됩 니 다.
2:@Service 는 업무 층 에 대한 설명 에 사용 되 지만 현재 이 기능 은@Component 와 같 습 니 다.
3:@Constroller 는 제어 층 에 대한 설명 에 사용 되 지만 현재 이 기능 은@Component 와 같 습 니 다.
2.2 BookService 수정

package com.zhangguo.Spring051.ioc02;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 *      
 */
@Component
public class BookService {
 IBookDAO bookDAO;
 
 public void storeBook(String bookname){
  //  
  ApplicationContext ctx=new ClassPathXmlApplicationContext("IOCBeans02.xml");
  //      id bookdao bean
  bookDAO=(IBookDAO)ctx.getBean("bookdaoObj");
  System.out.println("    ");
  String result=bookDAO.addBook(bookname);
  System.out.println(result);
 }
}

구조 방법 중의 코드 를 storeBook 방법 에 직접 써 서 순환 로 딩 문 제 를 피 합 니 다.
2.3,IOC 프로필 을 수정 IOCBeans 02.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
  <context:component-scan base-package="com.zhangguo.Spring051.ioc02"></context:component-scan>
</beans>
굵 은 글 자 는 새로 추 가 된 xml 네 임 스페이스 와 패턴 제약 파일 위치 입 니 다.주해 스캐닝 의 범 위 를 증가 하고 가방 을 지정 하면 속성 설정 을 통 해 더욱 정확 한 범 위 를 설정 할 수 있 습 니 다.예 를 들 어:
태그 상용 속성 설정:
resource-pattern:지정 한 기본 가방 아래 의 하위 가방 을 선택 합 니 다.
하위 태그:
include-filter:포함 할 가방 을 지정 합 니 다.
exclude-filter:제외 할 가방 을 지정 합 니 다.

<!--     com.zhangguo.anno.bo        --> 
<context:component-scan base-package="com.zhangguo.anno" resource-pattern="bo/*.class" />

<context:component-scan base-package="com.zhangguo.anno" >

 <context:include-filter type="aspectj“ expression="com.zhangguo.anno.dao.*.*"/>
 <context:exclude-filter type=“aspectj” expression=“com.zhangguo.anno.entity.*.*”/>

</context:component-scan>

include-filter 는 포함 해 야 할 목표 유형 을 표시 합 니 다.exclude-filter 는 제외 해 야 할 목표 유형 을 표시 합 니 다.type 은 채 택 된 여과 유형 을 표시 합 니 다.모두 다음 과 같은 5 가지 유형 이 있 습 니 다.
Filter Type
Examples Expression
Description
annotation
org.example.SomeAnnotation
SomeAnnotation 클래스 를 주 해 했 습 니 다.
assignable
org.example.SomeClass
모든 확장 또는 SomeClash 클래스 구현
aspectj
org.example..*Service+
AspectJ 문법 은 org.example 에서 Service 를 포함 하 는 모든 클래스 와 하위 클래스 를 포함 합 니 다.
regex
org\.example\.Default.*
Regelar 표현 식,정규 표현 식
custom
org.example.MyTypeFilter
코드 필 터 를 통 해 org.springframework.core.type.TypeFilter 인 터 페 이 스 를 실현 합 니 다.
expression 은 필 터 를 나타 내 는 표현 식 입 니 다.

 <!-- 1、                    ,   resource-pattern         -->
 <context:component-scan base-package="com.zhangguo.Spring051"
  resource-pattern="ioc04/A*.class">
 </context:component-scan>
com.zhangguo.Spring 051.ioc 04 에서 모든 이름 을 A 로 시작 하 는 클래스 만 스 캔 합 니 다. 

<!--2、     org.springframework.stereotype.Repository  
  exclude-filter    ,include-filter    ,     -->
 <context:component-scan base-package="com.zhangguo.Spring051.ioc04"> 
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository" />
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
 </context:component-scan>

<!--3、aspectj  ,  dao     ,  entity     -->
 <context:component-scan base-package="com.zhangguo.anno" >
 <context:include-filter type="aspectj" expression="com.zhangguo.anno.dao.*.*"/>
 <context:exclude-filter type="aspectj" expression="com.zhangguo.anno.entity.*.*"/>
</context:component-scan>
2.4,테스트 클래스

package com.zhangguo.Spring051.ioc02;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
 @org.junit.Test
 public void testStoreBook()
 {
  //  
  ApplicationContext ctx=new ClassPathXmlApplicationContext("IOCBeans02.xml");
  BookService bookservice=ctx.getBean(BookService.class);
  bookservice.storeBook("《Spring MVC        》");
 }
}

실행 결과:
 
2.5.소결
설정 파일 에서 우 리 는 bookdaoObj 와 Bookservice 형식의 대상 을 설명 하지 않 았 지만 용기 에서 인 스 턴 스 를 얻 고 성공 적 으로 실 행 했 습 니 다.이 유 는 클래스 의 시작 부분 에@Component 주 해 를 사 용 했 기 때 문 입 니 다.Spring 용기 에 의 해 인식 되 고 Spring 을 시작 하면 용기 관리 Bean 으로 자동 으로 전환 할 수 있 기 때 문 입 니 다.
 자동 조립
 이전 예시 에서 알 수 있 듯 이 두 위치 모두 Application Context 를 사용 하여 용 기 를 초기 화한 후 필요 한 Bean 을 얻어 자동 조립 을 통 해 간소화 할 수 있다.
3.1、BookDAO 수정 

package com.zhangguo.Spring051.ioc03;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

/**
 *          
 */
@Repository
public class BookDAO implements IBookDAO {

 public String addBook(String bookname) {
  return "    "+bookname+"  !";
 }
}

주 해 를 Repository 로 수정 하여 Component 보다 더 적절 하고 불필요 합 니 다.
3.2 BookService 수정 

package com.zhangguo.Spring051.ioc03;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;

/**
 *      
 */
@Service
public class BookService {
 @Autowired
 IBookDAO bookDAO;
 
 public void storeBook(String bookname){
  System.out.println("    ");
  String result=bookDAO.addBook(bookname);
  System.out.println(result);
 }
}

클래스 BookService 의 주 해 를 Service 로 바 꿉 니 다.bookdao 멤버 변수 에 주 해 를 추가 하 였 습 니 다@Autowired.이 주 해 는 멤버 변수,방법 과 구조 함수 에 주 해 를 하여 자동 조립 작업 을 완성 할 수 있 습 니 다.쉽게 말 하면 유형 에 따라 용기 에서 빈 이 bookdao 필드 에 주 는 것 을 자동 으로 찾 을 수 있 습 니 다.@Autowired 는 유형 에 따라 자동 으로 조립 되 며 이름 에 따라 조립 해 야 할 경우@Qualifier 에 맞 춰 야 합 니 다.또한 다른 주 해 를 사용 할 수 있 습 니 다.@Resource:@Qualifier,@Inject:@Autowired 와 같 습 니 다.
@Service 는 비 즈 니스 계층 구성 요 소 를 설명 하 는 데 사 용 됩 니 다.
@Controller 는 제어 층 구성 요 소 를 설명 하 는 데 사 용 됩 니 다(예 를 들 어 struts 의 action)
@Repository 는 데이터 액세스 구성 요소,즉 DAO 구성 요 소 를 설명 하 는 데 사 용 됩 니 다.
@Component 는 구성 요소 가 분류 되 기 어 려 울 때 이 주 해 를 사용 하여 주 해 를 할 수 있 습 니 다.
조립 주 해 는 주로@Autowired,@Qualifier,@Resource 가 있 는데 그들의 특징 은:
1.@Resource 는 기본적으로 이름 에 따라 주입 을 조립 합 니 다.이름 에 맞 는 bean 을 찾 지 못 할 때 만 유형 에 따라 주입 을 조립 합 니 다.
2.@Autowired 는 기본적으로 유형 에 따라 조립 하여 주입 합 니 다.이름 에 따라 주입 을 옮 기 려 면@Qualifier 와 결합 하여 사용 해 야 합 니 다.
3.@Resource 주 해 는 J2EE 가 제공 하고@Autowired 는 spring 이 제공 하기 때문에 시스템 이 spring 에 대한 의존 을 줄 이 고@Resource 를 사용 하 는 방식 을 권장 합 니 다.마 븐 프로젝트 가 1.5 인 JRE 라면 더 높 은 버 전 으로 바 꿔 야 한다.
4.@Resource 와@Autowired 는 필드 나 이 필드 의 setter 방법 에 주 해 를 쓸 수 있 습 니 다.
5.@Autowired 는 구성원 변수,방법 과 구조 함 수 를 주석 할 수 있 고@Qualifier 의 주석 대상 은 구성원 변수,방법 입 참,구조 함수 입 참 이다.
6.@Qualifier("XXX")의 XX 는 Bean 의 이름 이기 때문에@Autowired 와@Qualifier 를 결합 하여 사용 할 때 자동 으로 주입 하 는 정책 이 by Type 에서 by Name 으로 바 뀌 었 습 니 다.
7.@Autowired 주석 을 자동 으로 주입 할 때 Spring 용기 에 일치 하 는 후보 Bean 수 는 반드시 있어 야 하고 하나만 있어 야 하 며 속성 required 를 통 해 불필요 하 게 설정 할 수 있 습 니 다.
8.@Resource 조립 순서
8.1.name 과 type 을 동시에 지정 하면 Spring 컨 텍스트 에서 유일 하 게 일치 하 는 bean 을 찾 아 조립 하고 찾 지 못 하면 이상 을 던 집 니 다.
8.2.name 을 지정 하면 컨 텍스트 에서 이름(id)과 일치 하 는 bean 을 찾 아 조립 하고 찾 지 못 하면 이상 을 던 집 니 다.
8.3.type 을 지정 하면 상하 문 에서 유형 이 일치 하 는 유일한 bean 을 찾 아 조립 합 니 다.여러 개 를 찾 지 못 하거나 찾 지 못 하면 이상 을 던 집 니 다.
8.4.name 도 지정 되 지 않 고 type 도 지정 되 지 않 으 면 자동 으로 by Name 방식 으로 조립 합 니 다.일치 하지 않 으 면 원본 형식 으로 되 돌아 가 일치 하고 일치 하면 자동 으로 조립 합 니 다.

package com.zhangguo.Spring051.ioc05;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;

/**
 *      
 */
@Service
public class BookService {
 
 public IBookDAO getDaoofbook() {
  return daoofbook;
 }

 /*
 @Autowired
 @Qualifier("bookdao02")
 public void setDaoofbook(IBookDAO daoofbook) {
  this.daoofbook = daoofbook;
 }*/
 
 @Resource(name="bookdao02")
 public void setDaoofbook(IBookDAO daoofbook) {
  this.daoofbook = daoofbook;
 }

 /*
 @Autowired
 @Qualifier("bookdao02")
 */
 IBookDAO daoofbook;
 
 /*
 public BookService(@Qualifier("bookdao02") IBookDAO daoofbook) {
  this.daoofbook=daoofbook;
 }*/
 
 public void storeBook(String bookname){
  System.out.println("    ");
  String result=daoofbook.addBook(bookname);
  System.out.println(result);
 }
}

3.3 테스트 운행 

package com.zhangguo.Spring051.ioc03;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
 @org.junit.Test
 public void testStoreBook()
 {
  //  
  ApplicationContext ctx=new ClassPathXmlApplicationContext("IOCBeans03.xml");
  BookService bookservice=ctx.getBean(BookService.class);
  bookservice.storeBook("《Spring MVC        》");
 }
}

실행 결과:
 
IOC 구현
0 설정 이란 xml 파일 을 사용 하지 않 고 용 기 를 초기 화하 고 하나의 형식 으로 대체 하 는 것 입 니 다.
 IBookDAO 코드 는 다음 과 같 습 니 다. 

package com.zhangguo.Spring051.ioc06;

/**
 *         
 */
public interface IBookDAO {
 /**
  *     
  */
 public String addBook(String bookname);
}

IBookDAO 의 실현 클래스 BookDAO 코드 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc06;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

/**
 *          
 */
@Repository
public class BookDAO implements IBookDAO {

 public String addBook(String bookname) {
  return "    "+bookname+"  !";
 }
}

Bookdao 클래스 에@Repository 가 초기 화 되 었 을 때 이 종 류 는 용기 관리 에 의 해 Bean 을 생 성하 여 구조 적 방법 으로 테스트 할 수 있 습 니 다.
비 즈 니스 층 BookService 코드 는 다음 과 같 습 니 다. 

package com.zhangguo.Spring051.ioc06;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

/**
 *      
 */
@Service
public class BookService {
 @Resource
 IBookDAO bookDAO;
 
 public void storeBook(String bookname){
  System.out.println("    ");
  String result=bookDAO.addBook(bookname);
  System.out.println(result);
 }
}
클래스 BookService 는 용기 관 리 를@Service 에 주 해 했 기 때문에 초기 화 할 때 하나의 빈 을 생 성 합 니 다.형식 은 BookService 입 니 다.필드 bookDAO 에@Resource 를 주 해 했 습 니 다.자동 조립 에 사 용 됩 니 다.Resource 는 기본적으로 이름 에 따라 주입 을 조립 합 니 다.이름 에 맞 는 bean 을 찾 지 못 할 때 만 유형 에 따라 주입 을 조립 합 니 다.
원본 xml 프로필 을 대체 할 응용 프로그램 Cfg 클래스 를 추가 합 니 다.코드 는 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc06;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 *       
 */
@Configuration
@ComponentScan(basePackages="com.zhangguo.Spring051.ioc06")
public class ApplicationCfg {
 @Bean
 public User getUser(){
  return new User("  ");
 }
}

@Configuration 은 설정 파일 의에 해당 하 며,ComponentScan 은 설정 파일 의 context:component-scan 에 해당 하 며,속성 도 마찬가지 로 설정 합 니 다.
,@Bean 은에 해당 하 며,방법 과 주해 에 만 주해 할 수 있 습 니 다.일반적으로 방법 에 사용 되 며,원본 코드 에 서 는@Target({Element Type.METHOD,Element Type.ANNOTATIONTYPE}),방법 명 은 id 에 해당 합 니 다.중간 에 User 를 사 용 했 습 니 다.User 류 의 코드 는 다음 과 같 습 니 다. 

package com.zhangguo.Spring051.ioc06;

import org.springframework.stereotype.Component;

@Component("user1")
public class User {
 public User() {
  System.out.println("  User  ");
 }
 public User(String msg) {
  System.out.println("  User  "+msg);
 }
 public void show(){
  System.out.println("      !");
 }
}

용기 초기 화 코드 는 이전 과 다 릅 니 다.구체 적 으로 다음 과 같 습 니 다.

package com.zhangguo.Spring051.ioc06;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Test {
 @org.junit.Test
 public void testStoreBook()
 {
  //  ,          ,Spring    ApplicationCfg.class     
  ApplicationContext ctx=new AnnotationConfigApplicationContext(ApplicationCfg.class);
  BookService bookservice=ctx.getBean(BookService.class);
  bookservice.storeBook("《Spring MVC        》");
  User user1=ctx.getBean("user1",User.class);
  user1.show();
  User getUser=ctx.getBean("getUser",User.class);
  getUser.show();
 }
}

용기 초기 화 는 하나의 형식 으로 이 루어 집 니 다.Spring 은 애플 리 케 이 션 Cfg.class 를 반사 하여 용 기 를 초기 화 합 니 다.중간 user 1 과 getUser 는 같은 Bean 입 니까?
정 답 은 부정 적 입 니 다.ApplicationCfg 에서 설명 하 는 방법 getUser 는 xml 파일 에서를 정의 하고 User 클래스 에@Component("user 1")를 주석 하면 다른실행 결과:
 
소결:0 설정 과 주 해 를 사용 하 는 것 이 편리 하지만 번 거 로 운 xml 파일 을 만 들 필요 가 없습니다.xml 를 대체 하기 위해 서 는 인 스 턴 스 에 따라 선택 하거나 둘 을 결합 해서 사용 해 야 합 니 다.용기 로 사용 하 는 설정 정 보 는 하 드 인 코딩 이 므 로 발표 후에 수정 하기 어렵 습 니 다. 
5.예시 다운로드
다운로드 주소:SpringIoC_jb51.rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기