[SPRING] ComponentScan.basePackages 대 ComponentScan.basePackageClasses는 하나의 봄 webMVC 컨트롤러를 등록?
SPRINGComponentScan.basePackages 대 ComponentScan.basePackageClasses는 하나의 봄 webMVC 컨트롤러를 등록?
나는 나의 봄의 WebApplicationContext에 하나의 특정 컨트롤러 클래스를 추가 할. (그 스칼라에서, 그러나 여기에서 적응 : 하나의 클래스와 구성 요소를 스캔 : ComponentScan 또는 컨텍스트를 사용하여) 나는 다음과 같은 예를 가로 질러
@Configuration
@ComponentScan(
basePackages = Array("com.example.controllers"),
useDefaultFilters = false,
includeFilters = Array(
new ComponentScan.Filter(`type` = FilterType.ASSIGNABLE_TYPE,
value = Array(classOf[com.example.controllers.MyController]))))
class MyConfig {
}
이것은 잘 작동 (하지만 매우 장황). 그러나 봄의 @ComponentScan도 basePackageClasses있다
@Configuration
@ComponentScan( basePackageClasses=Array(classOf[com.example.controllers.MyController]))
class MyConfig {
}
basePackageClasses의, 봄의 문서는 말합니다 :
Type-safe alternative to basePackages() for specifying the packages to
scan for annotated components.
첫 번째 ComponentScan에만 제대로 com.example.controllers.MyController,하지만 두 번째 원인 내 @Controller을 모두 추가하는 동안 그러나, 스캔 및 추가 할 수 있습니다! 왜? basePackageClasses의 사용은 무엇입니까?
예 같은 : https://github.com/mikaelhg/springmvc-example/blob/master/src/main/java/mikaelhg/example/ExampleConfiguration.java basePackageClasses는 하나의 구성 요소를로드하는 데 사용할 수 있습니다 것이 좋습니다.
최신 정보:
여담 대체로서 :
@Configuration
@ComponentScan(
basePackages = Array("com.example.controllers"),
useDefaultFilters = false,
includeFilters = Array(
new ComponentScan.Filter(`type` = FilterType.ASSIGNABLE_TYPE,
value = Array(classOf[com.example.controllers.MyController]))))
class MyConfig {
}
와
@Configuration
class MyConfig {
@Bean
var myController = new com.example.controllers.MyController
}
WebApplicationContext를 추가 할 때 - MyController에가 (동작 (404) - NOTFOUND로 변경) 서블릿에 연결되어 있지 도착 도착 않을 것으로 보인다.
해결법
-
==============================
1.그 속성의 전체의 javadoc 읽기
그 속성의 전체의 javadoc 읽기
형태 보증하여 패키지의 이름의 문자열 값이 실수를 할 수 없습니다. 잘못된 클래스를 지정하면 컴파일 타임에 실패합니다.
당신이 basePackageClasses를 지정하면, 봄은 사용자가 지정한 클래스의 패키지 (및 서브 패키지)를 검색합니다. 이 클래스 / 등 컨트롤러, 서비스와 같은 인터페이스는 컨트롤러 클래스를 포함하는 하나 개의 패키지에 모든 컨트롤러를 넣고 basePackageClasses에 컨트롤러 클래스를 지정 무 조작으로 멋진 트릭입니다. 봄은 그들 모두를 선택합니다.
당신은 여전히 필터를 지정해야합니다.
from https://stackoverflow.com/questions/24130166/componentscan-basepackageclasses-vs-componentscan-basepackages-to-register-a-sin by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 GeneratedValue 주석 사용 (0) | 2019.10.18 |
---|---|
[SPRING] 봄의 데이터를 MongoRepository와 쿼리 주석을 사용하는 동안 쿼리를 표시하는 방법 (0) | 2019.10.18 |
[SPRING] 봄 @SessionAttribute 어떻게 동일한 컨트롤러에서 세션 개체를 검색합니다 (0) | 2019.10.17 |
[SPRING] 일반 JSON 봄 데이터 REST (안 HAL 형식) (0) | 2019.10.17 |
[SPRING] 봄 부팅에 TransientPropertyValueException (0) | 2019.10.17 |