Spring Boot 是使用了“习惯优于配置”(Spring Boot 会默认给我们做一些全局配置)的理念,从而可以快速的让我们的项目跑起来,但当我们想要自己对这些配置进行修改时,我们就需要去修改 Spring Boot 的配置文件了application.properties
。
application.properties
文件放在src/main/resources
或类路径的/config
目录下,如果创建的只是一个普通的 web 项目的话是没有这个配置文件的,需要我们自己去创建。
一 自定义属性及使用
application.properties
使用键值对的形式来定义我们需要的属性
HelloWorldControlle.java
使用注解@value(“${paramName}")
来注入属性值
这种方式对于单个的属性注入来说会很方便,但是如果是一个 bean ,它有很多的属性,那么我们就可以采取绑定的方式将键值对集合绑定到一个 bean 上。
application.properties
com.name=acey
com.gender=male
user.java
@ConfigurationProperties(prefix = "com")
public class User {
private String name;
private String gender;
"setter / getter 省略"
其中 prefix
是我们在 application.properties
中配置的键值对的前缀,除了在我们需要绑定的 bean 上加注解之外,我们还需要在 Spring Boot 的启动入口类中加上注解 @EnableConfigurationProperties({User.class})
@Controller
@SpringBootApplication
@Configuration
@EnableConfigurationProperties({User.class})
public class HelloWorldApplication {
......
}
注:每个键对应的值都可以是另外一个键。比如
com.name=acey
com.gender=male
com.own=我是${com.name},我的性别是${com.gender}
Spring Boot 提供的随机值配置,避免了我们去用代码去生成
com.secret=${random.value}
com.number=${random.int}
com.bignumber=${random.long}
com.uuid=${random.uuid}
com.number.less.than.ten=${random.int(10)}
com.number.in.range=${random.int[1024,2048]}
二 自定义配置文件
我们除了在 application.properties
中去配置,我们还可以自定义一些配置文件,对于我们自定义的配置文件,我们也需要在 Spring Boot 的启动类中引入@PropertySource()
@Controller
@SpringBootApplication
@Configuration
@PropertySource("classpath:test.properties")
public class HelloWorldApplication {
...
}
三 多环境配置
在项目开发中,在不同的阶段,项目所需要的配置的文件是不同的,比如数据库地址,服务器端口等。一般情况下,对于多环境的配置,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
- application-dev.properties:开发环境
- application-test.properties:测试环境
- application-prod.properties:生产环境
至于哪个具体的配置文件会被加载,需要在application.properties
文件中通过spring.profiles.active
属性来设置,其值对应{profile}
值。
比如:spring.profiles.active=test
就会加载application-test.properties
配置文件内容