Spring 주해 @ Component, @ Service, @ Controller, @ Repository

Spring 2.5 에 서 는 @ Component 주석 을 제공 하 는 것 외 에 도 몇 가지 특별한 의 미 를 가 진 주석 을 정 의 했 습 니 다. 각각 @ Repository, @ Service 와 @ Controller 입 니 다.스프링 버 전에 서 이 세 개의 주석 과 @ Component 는 같은 효 과 를 가지 지만 주석 류 의 이름 을 보면 이 세 개의 주석 이 각각 지구 층, 업무 층 과 제어 층 (웹 층) 과 대응 하 는 것 을 쉽게 알 수 있다.현재 이 세 개의 주석 은 @ Component 에 비해 새로운 것 이 없 지만, Spring 은 이후 버 전에 서 특별한 기능 을 추가 할 것 입 니 다.따라서 웹 응용 프로그램 이 전형 적 인 3 층 구 조 를 사용 했다 면 지구 층, 업무 층, 통제 층 에서 각각 @ Repository, @ Service 와 @Controller 는 레이 어 링 에 있 는 클래스 에 주석 을 달 고 @ Component 로 중립 적 인 클래스 에 주석 을 달 습 니 다.
       조금 큰 프로젝트 에 서 는 보통 수백 개의 구성 요소 가 있 습 니 다. 이 구성 요소 들 이 xml 의 bean 정 의 를 사용 하여 설정 하면 설정 파일 의 부 피 를 증가 시 키 고 찾 거나 유지 하 는 것 도 불편 합 니 다.Spring 2.5 는 우리 에 게 구성 요소 자동 검색 체 제 를 도입 했다. 그 는 클래스 경로 아래 에서 표 시 를 찾 을 수 있다. @Component, @ Service, @ Controller, @ Repository 주석 클래스 를 spring 용기 에 포함 시 켜 관리 합 니 다.xml 파일 에서 bean 노드 설정 구성 요 소 를 사용 할 때 와 같은 역할 을 합 니 다.자동 검색 메커니즘 을 사용 하려 면 다음 설정 정 보 를 열 어야 합 니 다. 
주입 방식:
DAO 구현 클래스 를 service 구현 클래스 에 주입 하고 service 의 인터페이스 (service 의 실현 클래스 가 아 닌 것 을 주의 하 십시오) 를 action 에 주입 합 니 다. 주입 할 때 new 라 는 주입 클래스 를 사용 하지 마 십시오. spring 은 자동 으로 주입 되 기 때문에 수 동 으로 new 를 추가 하면 오류 가 발생 할 수 있 습 니 다. 그리고 속성 에 @ Autowired 를 추가 하면 getter () 와 setter () 방법 이 필요 하지 않 고 Spring 도 자동 으로 주입 됩 니 다.더 구체 적 인 내용 에 대해 서 는 주입 방식 에 더욱 능숙 해 지면 완전한 예 를 들 어 보 겠 다.설명: spring 의 설정 파일 에 < context: annotation - config / > 와 < context: component - can base - package = "주입 할 클래스 가 있 는 패키지" / > 만 추가 하면 base - package = "*" 를 사용 하여 모든 클래스 를 표시 할 수 있 습 니 다.  그 중에서 base - package 는 스 캔 이 필요 한 가방 (모든 하위 패키지 포함) 을 위해 인터페이스 앞 에 @ Autowired 와 @ Qualifier 주석 을 표시 하여 인 터 페 이 스 를 용기 에 주입 할 수 있 도록 합 니 다. 인터페이스 에 두 개의 실현 클래스 가 존재 할 때 그 중 하 나 를 지정 하여 주입 해 야 합 니 다. 이니셜 소문 자 를 실현 하 는 문자열 로 주입 해 야 합 니 다. 예 를 들 어:    @Autowired          @Qualifier("chinese")            private Man man;   그렇지 않 으 면 생략 할 수 있 습 니 다. @ Autowired 만 쓸 수 있 습 니 다.  。 @Service 서비스 계층 구성 요 소 는 업무 계층 구성 요 소 를 표시 하 는 데 사 용 됩 니 다. bean 을 정의 하 는 것 을 의미 합 니 다. bean 의 클래스 이름 에 따라 이니셜 을 소문 자로 하 는 bean 을 자동 으로 예화 합 니 다. 예 를 들 어 Chinese 는 chinese 로 예화 합 니 다. 이름 을 바 꾸 려 면 @ Service ("당신 이 바 꾼 bean 이름") 입 니 다. @Controller 는 제어 층 구성 요소 (예 를 들 어 struts 의 action) @ Repository 영구 층 구성 요 소 를 표시 하 는 데 사 용 됩 니 다. 데이터 액세스 구성 요 소 를 표시 하 는 데 사 용 됩 니 다. 즉, DAO 구성 요소 @ Component 는 구성 요 소 를 가리 키 며 구성 요소 가 분류 하기 어 려 울 때 이 주 해 를 사용 하여 표시 할 수 있 습 니 다. @Service public class VentorServiceImpl implements iVentorService { }@Repository public class VentorDaoImpl implements iVentorDao { } getBean 의 기본 이름 은 클래스 이름 (이니셜 소문 자) 입 니 다. 사용자 정의 하려 면 @ Service ("aaaaa") 로 지정 할 수 있 습 니 다. 이 bean 은 기본 값 으로 단일 예 입 니 다. 변경 하려 면 @ Service ("beanName") @ Scope ("prototype") 로 변경 할 수 있 습 니 다. 초기 화 방법 과 소각 방법 (방법 명 임 의) 을 다음 과 같이 지정 할 수 있 습 니 다.
1. <?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"  
2. >  
3.   
4. <context:component-scan base-package=”com.eric.spring”>   
5. </beans>   
   /*  base-package       (     )
     @Service         ,
     @Controller         ( struts  action),
     @Repository          , DAO  ,
     @Component    ,          ,              。
    */   

6. @Service public class VentorServiceImpl implements iVentorService { 
  
7. } @Repository public class VentorDaoImpl implements iVentorDao {  
8. }

/*getBean        (      ),      ,  @Service(“aaaaa”)     ,  bean      ,     ,    @Service(“beanName”) @Scope(“prototype”)   。                    (     ): @PostConstruct public void init() {  
*/
9. }  
10. @PreDestroy public void destory() {  
11. }

좋은 웹페이지 즐겨찾기