查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例

以下是查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点日志输出代码级获取 等方式,附带详细步骤和示例:


1. 使用Spring Boot Actuator

Actuator是Spring Boot提供的监控和管理工具,包含/configprops端点可查看所有配置属性。

步骤
1.1 添加依赖

pom.xml中添加Actuator依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.2 配置暴露端点

application.ymlapplication.properties中配置暴露configprops端点:

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "configprops,health"  # 暴露configprops和health端点
1.3 访问配置信息

启动应用后,访问:

复制代码
http://localhost:{port}/actuator/configprops

例如:http://localhost:8080/actuator/configprops

输出示例
json 复制代码
{
  "configurations": [
    {
      "name": "spring.http",
      "properties": {
        "encoding.auto": {
          "value": "false",
          "origin": "SpringBootAutoConfiguration"
        },
        "encoding.charset": {
          "value": "UTF-8",
          "origin": "Spring Boot default"
        }
      }
    },
    ...
  ]
}

2. 通过日志输出配置信息

在日志中直接打印所有配置属性。

步骤
2.1 配置日志级别

application.yml中启用配置属性日志:

yaml 复制代码
logging:
  level:
    org.springframework.boot.context.properties: DEBUG
2.2 启动应用

启动应用后,日志中会输出所有配置属性的加载信息,例如:

复制代码
DEBUG 12345 --- [           main] o.s.b.c.p.PropertySourceBootstrapConfiguration : Located property source: [...]
DEBUG 12345 --- [           main] o.s.b.c.p.PropertySourceBootstrapConfiguration : Adding property source: [...]
2.3 查看完整配置

若需更详细的输出,可在启动时添加参数:

bash 复制代码
java -jar your-app.jar --show-config

此参数会输出所有合并后的配置属性(Spring Boot 2.3+支持)。


3. 通过代码获取配置信息

在代码中注入Environment或使用@Value获取配置属性。

3.1 获取所有配置
java 复制代码
import org.springframework.core.env.Environment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {
    @Autowired
    private Environment env;

    @GetMapping("/all-config")
    public Map<String, Object> getAllProperties() {
        return env.getPropertySources()
                .stream()
                .flatMap(ps -> ps.getPropertyNames().stream()
                        .map(name -> new AbstractMap.SimpleEntry<>(name, ps.getProperty(name))))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
    }
}
访问接口

访问:

复制代码
http://localhost:8080/all-config

4. 使用Spring Boot DevTools的/env端点

DevTools提供了/env端点,可查询特定配置属性。

步骤
4.1 添加依赖
xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>
4.2 访问端点

访问:

复制代码
http://localhost:8080/actuator/env

或查询特定属性:

复制代码
http://localhost:8080/actuator/env/spring.datasource.url

5. 使用@ConfigurationProperties绑定并打印

将配置属性绑定到Bean并打印。

步骤
5.1 创建配置类
java 复制代码
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "your.prefix")
public class YourConfig {
    private String property1;
    // getters/setters
}
5.2 打印配置
java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class ConfigPrinter implements CommandLineRunner {
    @Autowired
    private YourConfig config;

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Config Property1: " + config.getProperty1());
    }
}

关键配置对比表格

方法 适用场景 优点 缺点
Actuator /configprops 开发/生产环境监控 直接通过HTTP接口查看所有配置 需配置安全策略(避免暴露敏感信息)
日志输出 调试或启动时快速查看 无侵入性,适合临时调试 需手动解析日志内容
代码获取 需要程序内处理配置信息 灵活控制输出格式 需编写代码
DevTools /env 开发环境快速查询 支持查询单个属性 需依赖DevTools模块
@ConfigurationProperties 需要绑定配置到Bean时 类型安全,符合Spring规范 需针对每个配置前缀编写Bean

注意事项

  1. 安全配置

    • 生产环境需限制Actuator端点访问,例如:

      yaml 复制代码
      management:
        endpoints:
          web:
            exposure:
              include: "health"
          security:
            enabled: true
  2. 敏感信息过滤

    • 避免暴露敏感配置(如密码),可通过management.endpoints.web.cors.allowed-origins或安全策略控制访问。
  3. 性能影响

    • /configprops端点在配置复杂时可能返回大量数据,需注意性能。

完整示例代码

application.yml
yaml 复制代码
spring:
  application:
    name: config-demo
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root

management:
  endpoints:
    web:
      exposure:
        include: "configprops,health"
pom.xml依赖
xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

通过上述方法,可根据需求选择最适合的配置查看方式。如需进一步优化或解决特定问题(如安全配置、日志过滤),可提供具体场景!

相关推荐
一只叫煤球的猫2 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9653 小时前
tcp/ip 中的多路复用
后端
bobz9653 小时前
tls ingress 简单记录
后端
皮皮林5514 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友4 小时前
什么是OpenSSL
后端·安全·程序员
bobz9654 小时前
mcp 直接操作浏览器
后端
前端小张同学7 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook7 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康8 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在8 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net