博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取并打印Spring容器中所有的Bean名称
阅读量:6676 次
发布时间:2019-06-25

本文共 2399 字,大约阅读时间需要 7 分钟。

思路:

  1.实现Spring的ApplicationContextAware接口,重写setApplicationContext方法,将得到的ApplicationContext对象保存到一个静态变量中,有了这个上下文对象,就可以在项目的任意地方用它来得到任意Bean;

  2.调用applicationContext.getBeanDefinitionNames()方法就可以拿到Spring容器中所有的Bean名称;这里为了测试方便就直接在InitializingBean 接口的afterPropertiesSet方法中打印所有Bean名称;启动Spring容器,观察控制台即可看到打印结果,打印Spring容器中所有bean在项目调试的时候很有用。

1 import org.springframework.beans.BeansException; 2 import org.springframework.beans.factory.InitializingBean; 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.ApplicationContextAware; 5 import org.springframework.stereotype.Component; 6  7 /** 8  * 打印Spring容器所有的Bean名称 9  *10  * @author syj11  */12 @Component13 public class ApplicationContextBean implements ApplicationContextAware, InitializingBean {14 15     public static ApplicationContext applicationContext;16 17     /**18      * 获取 ApplicationContext19      *20      * @param applicationContext21      * @throws BeansException22      */23     @Override24     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {25         ApplicationContextBean.applicationContext = applicationContext;26     }27 28     /**29      * 打印IOC容器中所有的Bean名称30      *31      * @throws Exception32      */33     @Override34     public void afterPropertiesSet() throws Exception {35         String[] names = applicationContext.getBeanDefinitionNames();36         for (String name : names) {37             System.out.println(">>>>>>" + name);38         }39         System.out.println("------\nBean 总计:" + applicationContext.getBeanDefinitionCount());40     }41 }

 

还有一种更简单的方式,直接使用@Autowired注入ApplicationContext对象:

1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.context.ApplicationContext; 3 import org.springframework.web.bind.annotation.GetMapping; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RestController; 6  7 import java.util.Arrays; 8 import java.util.List; 9 10 @RestController11 @RequestMapping12 public class BeanController {13 14     @Autowired15     private ApplicationContext applicationContext;16 17     @GetMapping("/beanList")18     public List
beanList() {19 return Arrays.asList(applicationContext.getBeanDefinitionNames());20 }21 }

 

转载于:https://www.cnblogs.com/jun1019/p/10807575.html

你可能感兴趣的文章
js编程
查看>>
前端设计模式
查看>>
如何更优雅地切换Git分支
查看>>
ID3 算法介绍
查看>>
SpringBoot参数校验
查看>>
云HBase发布全文索引服务,轻松应对复杂查询
查看>>
码农张的Bug人生 - 目录
查看>>
学习webpack4 - 抽离公共代码
查看>>
【分享创造】react-typewriter-hook: 用react hooks来实现打字机的效果
查看>>
极限编程 (Extreme Programming) 和用户故事 (User Stories) 的关系
查看>>
coredns 排错记
查看>>
CentOS 7 安装 Nginx
查看>>
程序员毒鸡汤:我们都该学会正确的失败
查看>>
在 JavaScript 中优雅的提取循环内的数据
查看>>
HTML-语义类标签
查看>>
cookie、session、cache-control等
查看>>
YYCache 源码学习(二):YYDiskCache
查看>>
第十八天-企业应用架构模式-基本模式
查看>>
黑客图标
查看>>
【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
查看>>