本博客中使用的均是 application.properties 进行配置
注:如果工程中没有配置文件
application.properties
或application.yaml
文件,则可以在资源路径下新建一个
很多自定义的属性都需要在 application.properties
中定义,常见的例如数据库的常量配置、默认端口号配置等等。除了这些配置常量,还允许自定义常量:
# applicatino.properties 中指定配置
com.atcjx.name=cuijiexiang
com.atcjx.password=123456
在需要使用配置文件中的成员变量上方添加注解@Value(“${path}”)
,就可以在该成员变量上绑定配置文件类中的值:
@RestController
public class baseController {
@Value("${com.atcjx.name}")
private String name;
@Value("${com.atcjx.password")
private String password;
@RequestMapping("/")
String request(){
System.out.println("读取到的配置文件数据数据:");
System.out.println("用户名称:" + name);
System.out.println("密码:" + password);
return null;
}
}
启动项目后访问localhost:8080/
即可以看到如下的结果:
如果需要注入的属性值太多,一个个绑定耗费大量的时间,为了快速绑定大量配置属性,官方推荐使用 @ConfigurationProprites(prefix = “...”)
注解,指定使用哪里一个配置文件中属性的前缀。
@Component
@ConfigurationProperties(prefix = "com.atcjx")
public class configBean {
private String name;
private String password;
// 省略get、set方法
}
需要注意的是,@ConfigurationProperties
注解需要注入IOC容器中使用:搭配Spring注入类注解例如 @Component
,同时还需要在入口类上添加增加 @EnableConfigurationProperties
。
// 开启允许配置文件配置属性
@EnableConfigurationProperties
@SpringBootApplication
public class SpringBootTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootTestApplication.class, args);
}
}
需要使用的地方使用Spring注入方式使用:
@RestController
public class baseController {
// 使用@AutoWired注入
@Autowired
configBean configBean;
@RequestMapping("/")
String request(){
System.out.println("读取到的配置文件数据数据:");
System.out.println("用户名称:" + configBean.getName());
System.out.println("密码:" + configBean.getPassword());
return "";
}
}
访问localhost:8080/
:读取成功!
很多时候,随机值也是配置的重要一环,如果将随机值的生成放入代码中会造成代码臃肿、不好理解。SpringBoot 配置文件帮助我们解决了这一问题。使用${random}
能够随机生成不同类型的值,例如:int、long、string类型。
dudu.secret=${random.value}
dudu.number=${random.int}
dudu.bignumber=${random.long}
dudu.uuid=${random.uuid}
dudu.number.less.than.ten=${random.int(10)}
dudu.number.in.range=${random.int[1024,65536]}
排序方式按照优先级降序排序:
位置如下所示:
更高优先级的配置文件能够覆盖低优先配置文件的配置。
相同路径下的 application.properties 和 application.yml 文件比较,application.properties 的配置优先级会更高!
很多情况下,应用程序需要部署到不同的运行环境,这就会导致不同环境配置上的细节可能会出现不同。就拿日志来说,生产日志会将日志级别设置为WARN
或者更高,并需要将日志写入日志文件中,方便运维的维护与管理;开发时日志级别只需要DEBUG
级别,将日志输出到控制台或许是不错的选择。
如果每一次发布时,都要删除或替换配置文件,这样会造成不必要的麻烦。SpringBoot提供给我们多环境配置来解决这个问题。
配置多环境之前,需要了解不同环境下的配置文件名各有不同,不同环境配置文件名都是 application 开头,后面添加 “-{profile}” 来指定响应的环境,就例如:
名称均可自己定义,主要是用于区分不同环境。现在我们就可以开始多环境配置。
第一步:创建响应环境配置文件
创建好三个环境的配置文件,分别是开发环境、测试环境、生产环境:
第二步:添加默认环境
如果还没有指定默认环境,SpringBoot会默认加载application.properties,如果需要切换环境,就需要在 application.properties中指定开发环境配置文件:
spring.profiles.active=dev
这里的意思是SpringBoot启动时,加载 application-dev.properties 这个配置文件,一定要注意对应文件名称!
现在我们就完成了多环境的配置!
补充
如果项目已经打包,切换环境就需要使用命令行命令来实现:
# 设置启动环境为 dev
java -jar xxx.jar --spring.profiles.active=dev