You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot及其模块提供的Bean列表查询及相关使用疑问

关于Spring Boot自动配置Bean的那些事儿

哈哈,这个问题太戳中痛点了——我当初刚上手Spring Boot的时候,也经常莫名其妙重复造轮子,直到后来才发现很多需求官方早就通过自动配置给咱准备好了!

有没有官方的Spring Boot模块Bean列表?

当然有,而且不止一种方式能获取:

1. 官方文档的自动配置说明

Spring Boot的官方文档里,每个Starter对应的章节都会列出它自动配置的核心Bean。比如:

  • 针对Jackson,spring-boot-starter-json对应的自动配置类JacksonAutoConfiguration,会自动注册ObjectMapper、Jackson2ObjectMapperBuilder等Bean;
  • 针对Spring JMS,spring-boot-starter-jms对应的JmsAutoConfiguration,会注册ConnectionFactory、JmsTemplate、JmsListenerContainerFactory等常用Bean。

这些文档里还会标注每个Bean的可配置属性,比如Jackson的spring.jackson.date-format、JMS的spring.jms.template.default-destination。

2. 用Actuator的/beans端点实时查看

这是最直接的方式——给项目加上Actuator依赖:

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

然后在配置文件里暴露beans端点:

# application.properties
management.endpoints.web.exposure.include=beans

启动项目后访问http://localhost:8080/actuator/beans,就能看到应用中所有注册的Bean,包括:

  • Bean的名称、类型
  • 所属的配置类(比如JacksonAutoConfiguration)
  • 依赖的其他Bean
  • 作用域(单例/原型等)

这个列表是实时的,能帮你快速确认某个Bean是否已经被自动配置了。

怎么主动发现这些Bean,避免重复造轮子?

分享几个我平时用的方法:

  • 直接查看自动配置类源码:在IDEA里,按住Ctrl点击Starter依赖里的自动配置类(比如JmsAutoConfiguration),就能看到里面定义的所有Bean,以及它们的条件注解(比如@ConditionalOnMissingBean——意思是如果没有自定义的同类型Bean,才会自动配置)。比如你如果自己定义了JmsTemplate,Spring Boot的自动配置版本就不会生效了。
  • 用IDEA的Spring Boot Dashboard:打开IDEA的Spring Boot视图,里面有个「Beans」标签,能直观展示所有注册的Bean,还能按类型、名称过滤。比如搜「Jms」就能快速找到所有JMS相关的Bean,一目了然。
  • 关注配置属性提示:在application.properties/yml里,输入spring.jms.或者spring.jackson.,IDEA会自动提示所有可配置的属性,从这些属性也能反向推断出哪些Bean是可以被配置的,进而知道它们的存在。

举个实际例子

比如你提到的Jackson ObjectMapper:Spring Boot自动配置的jacksonObjectMapper已经帮你做了很多默认配置,比如解析日期为yyyy-MM-dd HH:mm:ss,处理空值时忽略null字段等。你完全可以直接注入使用:

@Autowired
private ObjectMapper objectMapper;

如果需要自定义,也不用重新new,而是通过Jackson2ObjectMapperBuilderCustomizer来修改默认配置,或者用spring.jackson.*配置项调整,比如:

spring.jackson.date-format=yyyy/MM/dd
spring.jackson.serialization.write-null-map-values=false

对于Spring JMS,自动配置的JmsTemplate可以直接注入发送消息,JmsListenerContainerFactory则支持@JmsListener注解监听消息,这些都不用自己手动配置,省了超多代码!

内容的提问来源于stack exchange,提问作者MiseryMachine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:47:36