Spring 조립 bean 의 3 가지 방식

8170 단어 springinaction
자신의 Spring 학습 과정 을 기록 하고 참고서: spring in action
먼저 SpringMVC 프로젝트 를 자체 건설 합 니 다.자체 프로젝트 를 만 드 는 과정 에서 두 개의 eclipse 문제 가 발생 했 습 니 다.
1.    maven 프로젝트 를 만 들 었 지만 웹 콘 텐 츠 파일 이 없습니다.
        프로젝트 - > 속성 - > 프로젝트 페 이 스 - > 동적 웹 모듈
2.    웹 콘 텐 츠 파일 에 웹. xml 이 없습니다.
        오른쪽 키 항목 - > Java EE Tools - > Generate Deployment Descriptor Stub
내 maven 의존 설정:
    
 
  	
      org.springframework
      spring-web
      4.1.2.RELEASE
      compile
    
    
      org.springframework
      spring-webmvc
      4.1.2.RELEASE
      compile
    
    	
      org.springframework
      spring-test
      4.1.2.RELEASE
      compile
    
	
    	junit
    	junit
    	4.12
    	test
	
  

Spring 조립 Bean 은 3 가지 방법 이 있 습 니 다.
    1. 자동화 설정
    2.JavaConfig
    3.XML
자동화 설정:
1. 자바 에 자동 검색 설정, 기본 스 캔 현재 가방 및 현재 가방 의 모든 하위 가방
    
@Configuration
@ComponentScan
public class CDPlayerConfig {

}

    스 캔 기본 패키지 지정
@ComponentScan("com.spring")

    기본 패키지
@ComponentScan(basePackages={"com.spring","com.jpa"})

    이상 은 String 을 통 해 기본 패 키 지 를 지 정 했 습 니 다. 이러한 방법 은 안전 하지 않 을 수 있 습 니 다. (이해 하지 못 함) 코드 를 재 구성 하면 모든 지정 한 기본 패 키 지 는 오류 가 발생 할 수 있 기 때문에 이렇게 할 수 있 습 니 다.
@Component(basePackageClasses={My.class,She.class})

2. XML 에서 자동 검색 설정
 
    

현재 상황 에서 @ Component 주석 이 존재 하 는 모든 클래스 는 자동 으로 bean 으로 스 캔 됩 니 다. bean 의 id 가 지정 되 지 않 으 면 bean 의 id 는 이니셜 소문 자로 존재 합 니 다.
@Component
public class SqtPeppers implements CompactDisc {
}

bean 의 id 지정:
@Component("sqt")

자동 조립 은 Spring 이 bean 의존 을 자동 으로 만족 시 키 는 방법 으로 @ Autowired 의 주 해 를 빌 리 는 것 입 니 다.
구조 기 에 사용 할 수 있 습 니 다:
	@Autowired
	public CDPlayer(SqtPeppers sqt){
		this.sqt = sqt;
	}

setter 방법 에 사용 할 수 있 습 니 다:
	@Autowired
	public void setSqtPeppers(SqtPeppers sqt){
		this.sqt = sqt;
	}

속성 에 사용 가능:
	@Autowired
	private SqtPeppers sqt;

이상 은 자동 조립 을 실현 할 수 있 지만 일치 하 는 bean 조립 이 없 으 면 상하 문 생 성 을 응용 할 때 Spring 에서 이상 을 던 집 니 다.이상 을 피하 기 위해:
@Autowired(required=false)

일치 하지 않 으 면 이 bean 은 일치 하지 않 는 상태 에 있 습 니 다.
자바 코드 로 bean 조립
@Configuration
//@ComponentScan
public class CDPlayerConfig {
	@Bean(name="sqt")
	public CompactDisc sqtPeppers(){
		return new SqtPeppers();
	}
	@Bean
	public MediaPlay cdPlay(){
		return new CDPlayer(new SqtPeppers());
	}
}

javaConfig 에서 @ Componentscan 주 해 를 제거 하고 @ Bean 주해 에 맞 추 는 방법 으로 bean 을 가 져 옵 니 다.기본적으로 bean 의 id 는 방법 명 입 니 다. sqtPeppers () 방법 에 @ Bean 주석 이 있 기 때문에 cdPlay () 방법 에서 호출 된 new 대상 은 Spring 에 의 해 차단 되 어 해당 bean 으로 되 돌아 갑 니 다.
사실은 이렇게 쓸 수 있다.
	@Bean
	public MediaPlay cdPlay(CompactDisc compactDisc){
		return new CDPlayer(compactDisc);
	}

XML 로 bean 설정 하기
        간단 한 bean 설명:     
    

Id 가 지정 되 지 않 았 기 때문에 전체 한정 클래스 이름 지정 ID 를 사 용 했 습 니 다. 이때 bean 의 ID 는 'com. spring. CDplayer \ # 0' 입 니 다. 그 중에서 \ # 0 은 하나의 계수 형식 으로 같은 유형의 서로 다른 bean 을 구분 하 는 데 사 용 됩 니 다.
지정 한 id:

        구조 기 주입 초기 화 bean:
        1.    원소
 
	

        2.    Spring 3.0 을 사용 하여 도입 한 c - 네 임 스페이스:
                XML 의 맨 위 에 모드 를 설명해 야 합 니 다.
 xmlns:c="http:www.springframework.org/schema/c"

                c - 네 임 스페이스 성명 후 구조 적 인 파 라 메 터 를 설명 할 수 있 습 니 다.
   

        위 에서 구조 파 라 메 터 를 사용 할 때 구조 적 매개 변수 이름 인 'sqt' 를 직접 참조 하고 위치 참조 방식 도 지원 합 니 다.
   

        XML 에 서 는 숫자 를 첫 글자 로 허용 하지 않 기 때문에 밑줄 을 사용 합 니 다.
        하나의 구조 적 매개 변수 만 있 을 때 우 리 는 간략하게 쓸 수 있다.
   

        지금까지 해 낸 것 은 모두 인용 주입 이 었 고 그 다음 에 글자 의 양 (value) 을 주입 했다.
   
    	
    	
    

        c - 네 임 스페이스 도 사용 할 수 있 습 니 다:
    
    

        매개 변수 가 하나 밖 에 없 을 때 도 간략하게 쓸 수 있 습 니 다.
    

        인용 과 글자 양의 조립 은 c - 네 임 스페이스 나 차이 가 없 지만 다음 조립 은 c - 네 임 스페이스 에서 할 수 없습니다.
        조립 집합:
  
    	
    	
    	
    		
    			
    			
    			
    		
    	
    

        value 대신 ref 를 사용 할 수도 있 습 니 다. set 를 사용 할 때 중복 되 는 요 소 를 무시 하고 순 서 를 보장 할 수 없습니다. Spring in action 을 배 울 때 c - 네 임 스페이스 성명 집합 을 사용 할 수 없습니다.
        이상 은 완전히 구조 기 를 통 해 주입 되 었 습 니 다. 그 다음 에 setter 를 사용 하여 주입 하 는 방식 입 니 다.
     
    	
    

        구조 기 주입 에 강하 게 의존 하고 선택 적 으로 setter 주입 에 의존 합 니 다.
        p - 네 임 스페이스 를 사용 합 니 다. c - 네 임 스페이스 의 용법 과 유사 합 니 다. p - 네 임 스페이스 는 태그 줄 이기 입 니 다.
        성명 p - 네 임 스페이스:
xmlns:p="http:www.springframework.org/schema/c"

        p - 네 임 스페이스 를 사용 하여 setter 주입:
    

        글자 의 양 을 주입 할 때 구조 기 주입 과 유사 하 게 바 꾸 면 된다.
        p - 네 임 스페이스 도 집합 을 설치 할 수 없습니다.
        
        util - 네 임 스페이스 사용:
        우선 util:


        util - 네 임 스페이스 를 사용 하면 list, set 요 소 를 설명 할 수 있 습 니 다.
    
    	
    	
    	
    
        bean 의 속성 주입 집합.
        
        
        

좋은 웹페이지 즐겨찾기