자바 프로그래머 는 어 리 석 은 새 부터 초보 의 (72) 까지 Spring (4) 주 해 를 이용 하여 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 Bean , bean scope Bean , @Scope :
@Scope("session")
@Component()
public class UserSessionBean implements Serializable {
...
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.