2

您好,我正在尝试为 Spring MVC webapp 编写自定义注释。但是 Spring applicationContext 没有检测到带注释的类。这是我的相关代码。

注释类:

@Component
@MigrationRequired(migrateFrom="Tiff",migrateTo="PDF-A")
public class WordTemplate extends Template{

}

自定义注释定义:

@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 是一个spring bean吗?如果是,为什么不自动装配 MigrationRequired。

于 2014-01-08T05:44:24.027 回答