查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例
以下是查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例:
1. 使用Spring Boot Actuator
Actuator是Spring Boot提供的监控和管理工具,包含/configprops
端点可查看所有配置属性。
步骤
1.1 添加依赖
在pom.xml
中添加Actuator依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.2 配置暴露端点
在application.yml
或application.properties
中配置暴露configprops
端点:
management:endpoints:web:exposure:include: "configprops,health" # 暴露configprops和health端点
1.3 访问配置信息
启动应用后,访问:
http://localhost:{port}/actuator/configprops
例如:http://localhost:8080/actuator/configprops
输出示例
{"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
中启用配置属性日志:
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 查看完整配置
若需更详细的输出,可在启动时添加参数:
java -jar your-app.jar --show-config
此参数会输出所有合并后的配置属性(Spring Boot 2.3+支持)。
3. 通过代码获取配置信息
在代码中注入Environment
或使用@Value
获取配置属性。
3.1 获取所有配置
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 {@Autowiredprivate 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 添加依赖
<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 创建配置类
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 打印配置
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class ConfigPrinter implements CommandLineRunner {@Autowiredprivate YourConfig config;@Overridepublic void run(String... args) throws Exception {System.out.println("Config Property1: " + config.getProperty1());}
}
关键配置对比表格
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
Actuator /configprops | 开发/生产环境监控 | 直接通过HTTP接口查看所有配置 | 需配置安全策略(避免暴露敏感信息) |
日志输出 | 调试或启动时快速查看 | 无侵入性,适合临时调试 | 需手动解析日志内容 |
代码获取 | 需要程序内处理配置信息 | 灵活控制输出格式 | 需编写代码 |
DevTools /env | 开发环境快速查询 | 支持查询单个属性 | 需依赖DevTools模块 |
@ConfigurationProperties | 需要绑定配置到Bean时 | 类型安全,符合Spring规范 | 需针对每个配置前缀编写Bean |
注意事项
-
安全配置:
- 生产环境需限制Actuator端点访问,例如:
management:endpoints:web:exposure:include: "health"security:enabled: true
- 生产环境需限制Actuator端点访问,例如:
-
敏感信息过滤:
- 避免暴露敏感配置(如密码),可通过
management.endpoints.web.cors.allowed-origins
或安全策略控制访问。
- 避免暴露敏感配置(如密码),可通过
-
性能影响:
/configprops
端点在配置复杂时可能返回大量数据,需注意性能。
完整示例代码
application.yml
spring:application:name: config-demodatasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: rootmanagement:endpoints:web:exposure:include: "configprops,health"
pom.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>
通过上述方法,可根据需求选择最适合的配置查看方式。如需进一步优化或解决特定问题(如安全配置、日志过滤),可提供具体场景!