SpringMVC 와 Spring 의 프로필 스 캔 패키지 상세 설명

Spring 전체 프레임 워 크 의 핵심 개념 에서 용 기 는 핵심 사상 으로 Bean 의 전체 생명 주 기 를 관리 하 는 것 이다.한 프로젝트 에서 용 기 는 반드시 하나 가 아니 라 Spring 에 여러 개의 용 기 를 포함 할 수 있 고 용 기 는 상하 층 관 계 를 가진다.현재 가장 흔히 볼 수 있 는 장면 은 한 프로젝트 에서 Spring 과 SpringMVC 라 는 두 개의 프레임 워 크 를 도입 하 는 것 이다.그러면 그것 은 바로 두 개의 용기 이다.Spring 은 부모 용기 이 고 SpringMVC 는 아들 용기 이 며 Spring 부모 용기 에 등 록 된 Bean 은 SpringMVC 용기 에서 볼 수 있 으 며 SpringMVC 용기 에 등 록 된 Bean 은 Spring 부모 용기 에서 볼 수 없다.즉,하위 용기 에서 부모 용기 에 등 록 된 Bean 을 볼 수 있 고 그렇지 않 으 면 안 된다.
우 리 는 빈 을 일괄 등록 하기 위해 아래 와 같은 주석 설정 을 사용 할 수 있 습 니 다.빈 마다 xml 를 따로 사용 하지 않 아 도 됩 니 다.<context:component-scan base-package="com.springmvc.test" />(xml 에서 이 탭 을 설정 하면 spring 은 base-pack 아래 나 하위 패키지 아래 자바 파일 을 자동 으로 검색 할 수 있 습 니 다.@Component@가 있 으 면 검색 할 수 있 습 니 다.Controller@Service이러한 주해 의 종 류 를 기다 리 면,이러한 종 류 를 bean 으로 등록 합 니 다)
(또한은 두 개의 키 라벨 을 제공 합 니 다.
         <context:include-filter>        <context:exclude-filter>이 두 개의 하위 탭 을 설명 하기 전에에 use-default-filters 속성 이 있 습 니 다.이 속성 은 기본적으로 true 입 니 다.이 는 지정 한 가방 에 표 시 된 모든@Component 클래스 를 스 캔 하고 bean 으로 등록 하 는 것 을 의미 합 니 다.즉,@Component 의 하위 주석@Service,@Reposity 등 입 니 다.그래서 설정 파일 에 만 이렇게 쓰 면<context:component-scan base-package="tv.huan.weisp.web"/> Use-default-filter 가 트 루 일 때 base-package 패키지 나 하위 패키지 에 있 는 모든 자바 류 를 스 캔 하고 일치 하 는 자바 류 를 bean 으로 등록 합 니 다.
 이 스 캔 의 입도 가 너무 큰 것 을 발견 할 수 있 습 니 다.지정 한 가방 아래 의 Controller 만 스 캔 하려 면 어떻게 해 야 합 니까?이때 하위 태그는 용감 한 곳 이 되 었 습 니 다.
아래 와 같다

<context:component-scan base-package="tv.huan.weisp.web .controller"> 
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
</context:component-scan> 
그림:

Spring 이 제공 하 는 참고 매 뉴 얼 에서 우 리 는 이 설정 의 기능 이 설정 한 base-package 패키지 의 모든@Component 주 해 를 사용 하 는 클래스 를 스 캔 하고 용기 에 자동 으로 등록 하 는 동시에@Controller,@Service,@Respository 라 는 세 개의 주 해 를 스 캔 하 는 것 임 을 알 게 되 었 습 니 다.그들 은@Component 를 계승 하기 때 문 입 니 다.
프로젝트 에서 우 리 는 다음 과 같은 설정 을 자주 볼 수 있 습 니 다.사실은 위의 설정 이 있 습 니 다.이것 은 생략 할 수 있 습 니 다.위의 설정 은 기본적으로 아래 설정 을 열 수 있 기 때 문 입 니 다.아래 설정 은@Required,@Autowired,@PostConstruct,@PersistenceContext,@Resource,@PreDestroy 등 주 해 를 기본적으로 설명 합 니 다.<context:annotation-config/>( ) <context:component-scan base-package="com.springmvc.test" /> 또한 SpringMVC 와 관련 된 다음 설정 도 있 습 니 다.검증 을 통 해 이것 은 SpringMVC 가 반드시 설정 해 야 하 는 것 입 니 다.@RequestMapping,@RequestBody,@Response Body 등 을 밝 혔 기 때 문 입 니 다.또한,이 설정 은 json 변환 해상도 등 많은 매개 변 수 를 기본적으로 불 러 옵 니 다.<mvc:annotation-driven />구체 적 장면 분석
저 희 는 모두 Spring 과 SpringMVC 두 개의 용 기 를 가지 고 있 습 니 다.그들의 설정 파일 은 각각 applicationContext.xml 과 applicationContext-MVC.xml 입 니 다.
1.applicationContext.xml 에를 설정 하여 등록 해 야 할 Bean 의 스 캔 과 등록 을 책임 집 니 다.
2.applicationContext-MVC.xml 에 설정 하고 SpringMVC 관련 주해 의 사용 을 책임 집 니 다.
3.프로젝트 를 시작 하면 SpringMVC 가 점프 할 수 없 음 을 발 견 했 습 니 다.log 의 로그 인쇄 단 계 를 DEBUG 로 설정 하여 디 버 깅 을 했 는데 SpringMVC 용기 의 요청 이 구체 적 인 contrller 에 반영 되 지 않 은 것 같 습 니 다.
4.applicationContext-MVC.xml 에서 설정<context:component-scan base-package=“com.springmvc" />,을 다시 시작 한 후 검증 에 성 공 했 습 니 다.springMVC 점프 가 유효 합 니 다.
총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 SpringMVC 와 Spring 의 프로필 스 캔 패키지 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기