こんにちは、Spring MVC Webアプリケーションのカスタムアノテーションを作成しようとしていますが、どういうわけか、アノテーションが付けられたクラスがSpringapplicationContextによって検出されません。これが私の関連コードです。
注釈付きクラス:
@Component
@MigrationRequired(migrateFrom="Tiff",migrateTo="PDF-A")
public class WordTemplate extends Template{
}
CustomAnnotationDefinition:
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MigrationRequired {
String migrateFrom() default "Tiff";
String migrateTo() default "PDF-A";
}
ContextLoadingでアノテーションを検出するためのクラス
public class MigrationHandler implements ApplicationContextAware, InitializingBean {
private ApplicationContext applicationContext;
@Override
public void afterPropertiesSet() throws Exception {
final Map<String, Object> myMaps = applicationContext.getBeansWithAnnotation(MigrationRequired.class);
System.out.println("inside after properties set" + myMaps );//**Always giving an empty set**
for (final Object myMap : myMaps.values()) {
final Class<? extends Object> myClass = myMap .getClass();
final MigrationRequired annotation = myClass .getAnnotation(MigrationRequired.class);
System.out.println("Found myClass: " + myClass + ", with tags: " + annotation.migrateFrom());
}
}
@Override
public void setApplicationContext(final ApplicationContext applicationContext)
throws BeansException {
System.out.println("This is called");
this.applicationContext = applicationContext;
}
}
applicationContext.xml
関連する構成
<bean id="migrationHandler" class="com.test.annotation.MigrationHandler"/>
<context:component-scan base-package="com.test" >
<context:include-filter type="annotation"expression="com.test.annotation.MigrationRequired"/>
</context:component-scan>
<!--Other beans definition-->
だからMigrationHandler
afterPropertiesSet()
私はいつもmyMaps
空っぽになっている方法で。私は何か間違ったことをしていますか?ありがとうございました。