综合实战
本章我们讲解了关于 Spring Boot 外化配置的原理及源码分析,本节我们通过一个具体的例子来简单演示在 Spring Boot 中如何使用不同类型的参数及配置。本节实例涉及的部分新知识点我们也会进行简单介绍和拓展。
在本节实例中,我们会用到命令行传递参数、默认配置文件 application.properties 及基于profile 配置参数、@Value 注解获取参数、 基于类型安全的@ConfigurationProperties 注解关联 Bean 等功能。
由于 Spring Boot 已经对外化配置进行了简化处理,对照此前章节中相关原理的介绍,我们在实践中使用起来是非常方便的。这里我创建了一个标准的 Spring Boot 项目,版本采用2.2.1.RELEASE。首先我们看一下项目的目录结构。
在 pom.xml 中引入的核心依赖为 spring-boot-starter-web,对应依赖源码如下。
<dependency> <groupId>org. springframework . boot</ groupId> <artifactId>spring- boot- starter-web</artifactId> </ dependency>
SpringbootConfigApplication 类为 Spring Boot 项目的启动类,我们不再做过多介绍。
ConfigController类为接收请求的 Controller, 在 其内部定义了 一 个 默 认 的getConfigParams 方法,在该方法内打印了不同途径获得的参数值,相关源码如下。
@RestController public class ConfigController { @Value( "${user . username}") private String username ; @Value("${user . password}") private String password; @Resource private LoginUserConfig loginUserConfig; @Value("${projectName :unknown}") private String projectName ; @RequestMapping("/") public String getConfigParams() { //启动命令传递参数 System. out .