spring mvcにおける注釈説明
3468 ワード
ノートスキャン
context:component-scan パッケージスキャン
この方式では、controler層をスキャンするだけでなく、@serviceと@repositoryのbeanをスキャンします.この時、いくつかの問題が発生します.これは特にspringmvc+spring+hibernaneなどの集積時に問題が発生しやすいです.
この場合の発生を避けるために、use-default-filters="false"を追加することができます.
すなわち、
スキャンする時は、デフォルトでcomponent Namedをスキャンします.ManagedBeanなどのコメント
@serviceなどのコメント
よく観察できます.@service注は全部@componentです.
原因が見つかりました.解決策はデフォルトのフィルタをオフにすることです.
context:component-scan パッケージスキャン
package="org.bdp">
この方式では、controler層をスキャンするだけでなく、@serviceと@repositoryのbeanをスキャンします.この時、いくつかの問題が発生します.これは特にspringmvc+spring+hibernaneなどの集積時に問題が発生しやすいです.
この場合の発生を避けるために、use-default-filters="false"を追加することができます.
すなわち、
package="org.bdp" use-default-filters="false">
:
ソースの表示protected void registerDefaultFilters() {
this.includeFilters.add(new AnnotationTypeFilter(Component.class));
ClassLoader cl = ClassPathScanningCandidateComponentProvider.class.getClassLoader();
try {
this.includeFilters.add(new AnnotationTypeFilter(ClassUtils.forName("javax.annotation.ManagedBean", cl), false));
this.logger.debug("JSR-250 'javax.annotation.ManagedBean' found and supported for component scanning");
} catch (ClassNotFoundException var4) {
;
}
try {
this.includeFilters.add(new AnnotationTypeFilter(ClassUtils.forName("javax.inject.Named", cl), false));
this.logger.debug("JSR-330 'javax.inject.Named' annotation found and supported for component scanning");
} catch (ClassNotFoundException var3) {
;
}}
スキャンする時は、デフォルトでcomponent Namedをスキャンします.ManagedBeanなどのコメント
@serviceなどのコメント
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Service {
String value() default "";
}
よく観察できます.@service注は全部@componentです.
原因が見つかりました.解決策はデフォルトのフィルタをオフにすることです.