IT袋

当前位置:主页 > 经验教程 > 建站编程 >

SpringBoot中如何查看程序有哪些bean

SpringBoot中如何查看程序有哪些bean

时间:2024-01-22 00:00:59 来源:IT袋 作者:马勇
导读:SpringBoot中如何查看程序有哪些bean,今日重点为您介绍SpringBoot中如何查看程序有哪些bean的相关知识,下面IT袋网为您详细介绍 在 Spring 中, 构成应用程序主干并由Spring IoC容器管理的对象称为bean。所以所谓

SpringBoot中如何查看程序有哪些bean

今日重点为您介绍SpringBoot中如何查看程序有哪些bean的相关知识,下面IT袋网为您详细介绍

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。所以所谓的Bean管理就是对对象的管理。包含创建对象、给对象注入属性,创建的某一个bean没有启动的问题,就需要进行排查,所以提前了解如何获取以及启动bean,是有好处的,毕竟工作中总是会遇到各种各样的bug。提前了解一些没有坏处。

1.IOC容器

Bean是Spring管理应用的基础,所有的bean都在IoC容器中,IOC容器负责管理它们的生命周期。

我们可以通过两种方式获取IOC容器内所有bean的列表:

  • 使用ListableBeanFactory接口获取bean
  • 使用Spring Boot Actuator

2.使用ListableBeanFactory接口获取bean

ListableBeanFactory接口提供了getBeanDefinitionNames()方法,该方法返回在这个工厂中定义的所有bean的名称。

实际上说白了就是使用ApplicationContext获取beans,因为ApplicationContext继承了ListableBeanFactory接口

SpringBoot中如何查看程序有哪些bean

完整项目结果如下:

SpringBoot中如何查看程序有哪些bean

创建SpringBoot项目,并创建UserController

@RestController
public class UserController {
    @Autowired
    ApplicationContext applicationContext;
    @GetMapping(value = "/displayallbeans")
    public void getHeaderAndBody() {
        String[] beans = applicationContext.getBeanDefinitionNames();
        for (String beanName : beans) {
            System.out.println("===========================================");
            Class<?> beanType = applicationContext
                    .getType(beanName);
            System.out.println("BeanName:" + beanName);
            System.out.println("Bean的类型:" + beanType);
            System.out.println("Bean所在的包:" + beanType.getPackage());
            System.out.println("Bean:" + applicationContext.getBean(
                    beanName));
            applicationContext.isSingleton(beanName);
        }
    }
}

创建启动类

@SpringBootApplication
public class DisplayAllbeansApplication {
    public static void main(String[] args) {
        SpringApplication.run(DisplayAllbeansApplication.class,args);
    }
}

测试

启动项目,浏览器访问http://localhost:8080/displayallbeans,在控制台打印所有IOC容器中的bean ·

SpringBoot中如何查看程序有哪些bean

注意:我们的方法是获取IOC容器中所有Bean,截图中只是展示我们自己定义的Bean

3.使用Spring Boot Actuator

在pom.xml添加actuator依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在application.yml文件中添加actuator配置

management:
  endpoints:
    web:
      exposure:
        include: '*'

使用“*”可以简化配置成开放所有端点的WEB端HTTP请求权限

测试

重新启动项目,访问http://localhost:8080/actuator查看应用所有端点信息

相关阅读

  • 怎么搭建ssr服务器 ssr一键搭建脚本最新

    怎么搭建ssr服务器 ssr一键搭建脚本最新

    IT电脑小知识篇,关于怎么搭建ssr服务器和ssr一键搭建脚本最新的IT知识,一起来看看吧! 看了vue 官方的文档,还是有点懵的。百度了一堆东西,终于成功的配置出基于vue-cli3的vue-ssr 服务端预

  • 域名注册查询工具有哪些 查询域名注册网站

    域名注册查询工具有哪些 查询域名注册网站

    小编为网友们解答域名注册查询工具有哪些和查询域名注册网站的IT知识,接下来IT袋小编就来介绍。 域名是网站的重要组成部分,它是企业网站的线上流量入口,是企业品牌宣传的形象窗口,

  • 什么是云原生? 云原生:解析云上生态系统

    什么是云原生? 云原生:解析云上生态系统

    为网友解答什么是云原生的电脑小知识,接下来分享详细内容。 我们说起云原生会想到什么?容器?微服务?Serverless? 下图展示了自 20 世纪 80 年代以来架构和流程的演变。 我们从中可以看

  • 1588v2应用领域有哪些 1588v2的主要应用领域是什么?

    1588v2应用领域有哪些 1588v2的主要应用领域是什么?

    一篇关于1588v2应用领域有哪些的方法内容,具体内容如下: 1588v2协议在各个领域的广泛应用表明其在提供高精度时间同步方面的重要性。 电信领域 国际电信联盟(ITU)和中国通信标准化协会