자바 프로그래머 는 어 리 석 은 새 부터 초보 의 (72) 까지 Spring (4) 주 해 를 이용 하여 spring 기본 설정 에 대한 상세 한 설명 을 실현 합 니 다.

9921 단어 spring
주: 본인 은 주해 방식 에 익숙 하지 않 기 때문에 이곳 의 주 해 를 설명 하고 기본 적 인 배 치 를 실현 한 후에 더 이상 주 해 를 따로 꺼 내 설명 하지 않 겠 습 니 다.

1. 준비 작업 (1) common - annotations. jar 가 져 오기 (2) schema 파일 이름 가 져 오기 spring - context - 2.5. xsd (3) xml beans 노드 에 설정
2. 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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-2.5.xsd"
default-default-lazy-init="true">
 <!--              -->   
 <context:annotation-config />   
 <!--   annotation    -->
<tx:annotation-driventransaction-manager="transactionManager" proxy-target-class="true"/>
 <!--  annotation     bean,   @Required,@Autowired       base-package       (     )-->
<context:component-scanbase-package="com" />
 .....   
 <beans>  

주: < context: component - canbase - package = "*. *" / > 이 설정 은 주석 을 해석 하 는 프로세서 여러 개 를 암시 적 으로 등록 하 였 습 니 다. 예 를 들 어 Autowired Annotation BeanPostProcessor CommonAnnotation BeanPostProcessor Persistence Annotation BeanPostProcessor Required Annotation BeanPostProcessor 는 사실 주석 자체 가 아무것도 할 수 없고 XML 과 마찬가지 로 설정 역할 만 합 니 다.주로 배후 에 있 는 강력 한 프로세서 입 니 다. < context: annotation - config / > 설정 항목 의 주석 에 사용 되 는 프로세서 가 포함 되 어 있 기 때문에 < context: component - canbase - package = "> 를 설정 한 후 < context: annotation - config > 를 설정 할 필요 가 없습니다.
1. 자바 코드 에서 @ Autowired 또는 @ Resource 주해 방식 으로 조립 합 니 다. 이 두 주해 의 차 이 는 @ Autowired 는 기본적으로 유형 별로 조립 합 니 다. @ Resource 는 기본적으로 이름 에 따라 조립 합 니 다. 이름 이 일치 하 는 bean 을 찾 지 못 하면 유형 별로 조립 합 니 다. @Autowired 는 일반적으로 set 방법 위 에 설치 할 수도 있 고 속성 위 에 설치 할 수도 있 지만 속성 위 에 설정 하여 자바 의 패 키 징 을 파괴 하기 때문에 일반적으로 사용 하 는 것 을 권장 하지 않 습 니 다.
@ Autowired 는 유형 에 따라 자동 으로 조립 됩 니 다.Spring 컨 텍스트 에 설치 할 형식의 bean 이 하나 이상 존재 할 때 BeanCreation Exception 이상 을 던 집 니 다.Spring 컨 텍스트 에 설치 할 형식의 bean 이 존재 하지 않 으 면 BeanCreation Exception 이상 을 던 집 니 다.우 리 는 @ Qualifier 와 @ Autowired 를 결합 하여 이 문 제 를 해결 할 수 있 습 니 다.
@Autowired  
public void setUserDao(@Qualifier("userDao") UserDao userDao) {   
   this.userDao = userDao;   
}  

이렇게 하면 Spring 은 id 를 찾 아 userDao 의 bean 을 조립 합 니 다.
UserDao 인 스 턴 스 가 존재 하지 않 을 수 있 습 니 다.
@Autowired(required = false)   
public void setUserDao(UserDao userDao) {   
    this.userDao = userDao;   
}  

2. @ Resource (JSR - 250 표준 주해, Spring 전용 @ Autowired 주해 대신 사용 하 는 것 을 추천 합 니 다) Spring 은 자신 이 정의 한 @ Autowired 주 해 를 지원 할 뿐만 아니 라 JSR - 250 규범 에 의 해 정 의 된 주해 도 지원 합 니 다. 각각 @ Resource, @ PostConstruct, @ PreDestroy 입 니 다. @리 소스 의 역할 은 @ Autowired 에 해당 합 니 다. @ Autowired 는 by Type 에 따라 자동 으로 주입 되 고 @ Resource 는 기본적으로 by Name 에 따라 자동 으로 주입 되 는 것 입 니 다. @리 소스 는 두 가지 속성 이 비교적 중요 합 니 다. 각각 name 과 type 입 니 다. Spring 은 @ 리 소스 주해 의 name 속성 을 bean 의 이름 으로 해석 하고 type 속성 은 bean 의 유형 으로 해석 합 니 다.따라서 name 속성 을 사용 하면 by Name 의 자동 주입 정책 을 사용 하고 type 속성 을 사용 할 때 by Type 자동 주입 정책 을 사용 합 니 다.name 도 지정 하지 않 고 type 속성 도 지정 하지 않 으 면 반사 체 제 를 통 해 byName 자동 주입 정책 @ Resource 조립 순 서 를 사용 합 니 다.
1 name 과 type 을 동시에 지정 하면 Spring 컨 텍스트 에서 유일 하 게 일치 하 는 bean 을 찾 아 조립 하고 찾 지 못 하면 이상 을 던 집 니 다.
2 name 이 지정 되 어 있 으 면 컨 텍스트 에서 이름 (id) 과 일치 하 는 bean 을 찾 아 조립 하고 찾 지 못 하면 이상 을 던 집 니 다.
3 type 을 지정 하면 컨 텍스트 에서 형식 이 일치 하 는 유일한 bean 을 찾 아 조립 합 니 다. 찾 지 못 하거나 여러 개 를 찾 으 면 이상 을 던 집 니 다.
4. name 도 지정 되 지 않 고 type 도 지정 되 지 않 으 면 자동 으로 by Name 방식 으로 조립 합 니 다 (2 참조).일치 하지 않 으 면 원본 형식 (UserDao) 으로 되 돌아 가 일치 하고 일치 하면 자동 으로 조립 합 니 다.
3. @ PostConstruct (JSR - 250) 는 방법 에 주 해 를 추가 합 니 다. @ PostConstruct 는 Bean 이 초기 화 된 후에 Spring 용기 에 의 해 실 행 됩 니 다.그것 의 전형 적 인 응용 장면 은 Bean 에 부모 클래스 에서 정의 하 는 속성 을 주입 해 야 하고 부모 클래스 의 속성 이나 속성 을 복사 할 수 없 는 setter 방법 이다. 예 를 들 어:
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {   
 private SessionFactory mySessionFacotry;   
@Resource  
public void setMySessionFacotry(SessionFactory sessionFacotry) {   
    this.mySessionFacotry = sessionFacotry;   
   }   
  @PostConstruct  
   public void injectSessionFactory() {   
      super.setSessionFactory(mySessionFacotry);   
    }   }  

여기 서 @ PostConstruct 를 통 해 UserDaoImpl 의 부모 클래스 에 정 의 된 session Factory 의 개인 속성 을 주입 하고 우리 가 정의 하 는 session Factory (부모 클래스 의 setSession Factory 방법 은 final 이 며 복사 할 수 없습니다) 를 주입 한 후에 우 리 는 슈퍼. getSession Factory () 를 호출 하여 이 속성 을 방문 할 수 있 습 니 다.4. @ PreDestroy (JSR - 250) 에 방법 에 주 해 를 달 면 이 방법 은 Bean 이 초기 화 된 후에 Spring 용기 에 의 해 실 행 됩 니 다.우 리 는 아직 그것 을 사용 할 장면 이 필요 하지 않 기 때문에, 여 기 는 시연 하지 않 는 다.그 용법 은 @ PostConstruct 와 같 습 니 다.5. Spring 주 해 를 사용 하여 Bean 의 정 의 를 완성 합 니 다. @ Autowired 또는 @ Resource 를 통 해 Bean 에 자동 으로 주입 되 는 기능 을 소개 합 니 다. 다음은 Bean 을 주석 하여 XML 설정 파일 에서 Bean 정의 설정 을 완전히 제거 하 는 방법 을 소개 합 니 다. @Component: 대응 하 는 클래스 에 @ Component 주 해 를 추가 하면 이 종 류 를 Bean 으로 정의 합 니 다.
@Component  
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {   
    ...   
}  

@ Component 주석 으로 정 의 된 Bean 을 사용 합 니 다. 기본 이름 (id) 은 소문 자로 시작 하 는 비 한정 클래스 입 니 다.여기 서 정 의 된 Bean 이름 은 userDaoImpl 입 니 다.빈 의 이름 도 지정 할 수 있 습 니 다. @ Component (userDao) @ Component 는 모든 Spring 관리 구성 요소 의 일반적인 형식 입 니 다. Spring 은 더욱 세분 화 된 주석 형식 도 제공 합 니 다. @ Repository, @ Service, @ Controller 는 각각 저장 층 Bean, 업무 층 Bean, 전시 층 Bean 에 대응 합 니 다.현재 버 전 (2.5) 에서 이 주석 들 은 @ Component 의 의미 와 같 고 완전히 통용 되 며 Spring 이후 버 전에 서 더 많은 의 미 를 추가 할 수 있 습 니 다.따라서 @ Repository, @ Service, @ Controller 를 사용 하여 @ Component 를 대체 하 는 것 을 추천 합 니 다.
6. < context: component - can / > 을 사용 하여 빈 정의 주석 작업 을 시작 합 니 다.
<beans xmlns="http://www.springframework.org/schema/beans" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context"      
xsi:schemaLocation="http://www.springframework.org/schema/beans    
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  http://www.springframework.org/schema/context     
http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
   <context:component-scan base-package="com.bzu" />   
</beans>  


<bean> Bean<context:component-scan/> ——SpringXML ( , )。<context:component-scan/> base-package , 。
<context:component-scan/>Spring 4

·

· org.example.SomeAnnotation SomeAnnotation

· org.example.SomeClass

· com\.kedacom\.spring\.annotation\.web\..*

·AspectJ org.example..*Service+ AspectJ

7. @Scope Bean
XML Beanbean scope Bean@Scope

@Scope("session")   
@Component()   
public class UserSessionBean implements Serializable {   
    ...   
}  

좋은 웹페이지 즐겨찾기