2

こんにちは、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空っぽになっている方法で。私は何か間違ったことをしていますか?ありがとうございました。

4

1 に答える 1

-1

MigrationHandler は春の Bean ですか? はいの場合、MigrationRequired を自動配線しないのはなぜですか。

于 2014-01-08T05:44:24.027 に答える