java代码中如何打印出所有的SpringBean呢?

转自:

java代码中如何打印出所有的SpringBean呢?

下文笔者讲述java代码中打印出所有SpringBean的方法分享,如下所示

实现思路:
     方式一:
	 实现Spring的ApplicationContextAware接口
         然后重写setApplicationContext方法
         得到的ApplicationContext对象保存到一个静态变量中
         此对象中就包含了所有的spring bean 

    方式二:
        调用applicationContext.getBeanDefinitionNames()方法
		  可获取Spring容器中所有Bean名称

例1:

 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
 
 /**
  * 打印Spring容器所有的Bean名称
  */
 @Component
 public class ApplicationContextBean implements ApplicationContextAware, InitializingBean {
 
     public static ApplicationContext applicationContext;
 
     /**
      * 获取 ApplicationContext
      *
      * @param applicationContext
      * @throws BeansException
      */
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         ApplicationContextBean.applicationContext = applicationContext;
     }
 
     /**
      * 打印IOC容器中所有的Bean名称
      * author:www.java265.com
      * @throws Exception
      */
     @Override
     public void afterPropertiesSet() throws Exception {
         String[] names = applicationContext.getBeanDefinitionNames();
         for (String name : names) {
             System.out.println("spring bean名称>>>>>>" + name);
         }
         System.out.println("------Bean 总计:" + applicationContext.getBeanDefinitionCount());
     }
 }
 

方式二:
直接使用@Autowired注入ApplicationContext对象

 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Arrays;
 import java.util.List;
 
 @RestController
 @RequestMapping
 public class BeanController {
 
     @Autowired
     private ApplicationContext applicationContext;
 
     @GetMapping("/beanList")
     public List<String> beanList() {
         return Arrays.asList(applicationContext.getBeanDefinitionNames());
     }
 }

?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值