spring扫描自定义注解并进行操作

Posted 规格严格-功夫到家-哈工大威海人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring扫描自定义注解并进行操作相关的知识,希望对你有一定的参考价值。

转载:http://blog.csdn.net/cuixuefeng1112/article/details/45331233

/**
 * 扫描注解添加服务到缓存以供判断时候为对外开放service
 */
@Component
@Lazy(true)
class AnnotationScannerConfigurer implements BeanDefinitionRegistryPostProcessor {
    
ArrayList<String> cache=RemoteCache.getCache();


    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
    }
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory postProcessBeanFactory) throws BeansException {
         Map<String, Object> map=configurableListableBeanFactory.getBeansWithAnnotation(RemoteTag.class);
         for (String key : map.keySet()) {
        cache.add(key);
            //System.out.println("beanName= "+ key );
         }
    }
}

我的AnnotationScannerConfigurer  实现了BeanDefinitionRegistryPostProcessor ,spring启动时会执行postProcessBeanFactory方法,通过postProcessBeanFactory我们就可以拿到@RemoteTag所修饰的bean了。然后随你怎么操作。

使用BeanDefinitionRegistryPostProcessor 是从mybaties的spring扫描实现类得到灵感的。

注意:@Lazy(true)是因为最后加载才能确保把所有@RemoteTag修饰的bean得到并进行操作。

 

SpringBoot:已经找到方法了。我用的是继承ApplicationListener<ContextRefreshedEvent>
然后用event.getApplicationContext().getBeansWithAnnotation(TableBind.class);即可
多谢大家

以上是关于spring扫描自定义注解并进行操作的主要内容,如果未能解决你的问题,请参考以下文章

springboot中关于自定义注解校验

关于手写实现Spring注解实现自定义配置功能

关于手写实现Spring注解实现自定义配置功能

关于手写实现Spring注解实现自定义配置功能

深入Spring 自定义注解加载和使用

自定义SpringBoot Starter 通过注解启动装配