当前位置:主页 > java教程 > Spring获取特定注解的Bean实例

Spring启动后获取特定注解的Bean实例分析

发布:2019-06-07 16:13:02 62


本站精选了一篇Spring相关的编程文章,网友邱元洲根据主题投稿了本篇教程内容,涉及到Spring、启动、注解、Bean、Spring获取特定注解的Bean实例相关内容,已被544网友关注,内容中涉及的知识点可以在下方直接下载获取。

Spring获取特定注解的Bean实例

本文研究的主要是Spring启动后获取所有拥有特定注解的Bean,具体如下。

最近项目中遇到一个业务场景,就是在Spring容器启动后获取所有的Bean中实现了一个特定接口的对象,第一个想到的是ApplicationContextAware,在setApplicationContext中去通过ctx获取所有的bean,后来发现好像逻辑不对,这个方法不是在所有bean初始化完成后实现的,后来试了一下看看有没有什么Listener之类的,发现了好东西ApplicationListener,然后百度一下ApplicationListener用法,原来有一大堆例子,我也记录一下我的例子好了。

很简单,只要实现ApplicationListener<ContextRefreshedEvent>接口,然后把实现类进行@Component即可,代码如下:

@Component 
public class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
	@Override 
	  public void onApplicationEvent(ContextRefreshedEvent event) {
		// 根容器为Spring容器 
		if(event.getApplicationContext().getParent()==null){
			Map<String,Object> beans = event.getApplicationContext().getBeansWithAnnotation(IMobile.class);
			for (Object bean:beans.values()){
				System.err.println(bean==null?"null":bean.getClass().getName());
			}
			System.err.println("=====ContextRefreshedEvent====="+event.getSource().getClass().getName());
		}
	}
}

其中,通过event.getApplicationContext().getBeansWithAnnotation获取到所有拥有特定注解的Beans集合,然后遍历所有bean实现业务场景。

总结思考:这样的功能可以实现系统参数的初始化,获取系统中所有接口服务清单等一系列需要在Spring启动后初始化的功能。

延生一下:除了以上启动后事件外,还有其他三个事件

Spring启动后获取所有拥有特定注解的Bean实例代码

Closed在关闭容器的时候调用,Started理论上在容器启动的时候调用,Stopped理论上在容器关闭的时候调用。

我通过TomcatServer进行启动停止,只看到了Refreshed和Closed,不知道为啥,有空再继续研究


参考资料

相关文章

  • Spring的RestTemplata使用的具体方法

    发布:2022-09-12

    给大家整理了关于Spring的教程,本篇文章主要介绍了Spring的RestTemplata使用的具体方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • SpringBoot整合Mybatis与MybatisPlus方法详细讲解

    发布:2023-04-24

    这篇文章主要介绍了SpringBoot整合Mybatis与MybatisPlus方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧


  • Spring ApplicationListener源码解析

    发布:2023-03-12

    这篇文章主要为大家介绍了Spring ApplicationListener源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • 分享springboot打包不同环境配置和shell脚本部署

    发布:2020-02-10

    这篇文章主要给大家介绍了关于springboot打包不同环境配置以及shell脚本部署的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用springboot具有一定的参考学习价值,需要的朋


  • Spring Cloud Gateway替代zuul作为API网关的方法

    发布:2023-03-30

    本文简要介绍如何使用Spring Cloud Gateway 作为API 网关(不是使用zuul作为网关),结合实例代码给大家详细讲解,感兴趣的朋友跟随小编一起看看吧


  • Spring Cloud Hystrix 服务容错保护的实现方法

    发布:2019-07-03

    这篇文章主要介绍了Spring Cloud Hystrix 服务容错保护的原理实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • springboot集成springsecurity 使用OAUTH2做权限管理的教程

    springboot集成springsecurity 使用OAUTH2做权限管理的教程

    发布:2022-07-07

    给大家整理一篇关于springboot的教程,这篇文章主要介绍了springboot集成springsecurity 使用OAUTH2做权限管理的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • SpringBoot读写操作yml配置文件方法

    发布:2023-04-25

    之前一直用的application.properties配置文件,只能是KV结构,后来的yml配置文件更像是树状结构,支持层级,比properties更灵活


网友讨论