1、SpringBoot多环境配置
1.1多环境配置的引入
在项目的整个研发过程中,同一个项目会面临着不同的使用环境。使用环境的不同,需要的配置信息也会不同。例如:数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境中,我们是使用正式的数据库,如果在项目中只有一个application.properties(application.yml)一个配置文件的话,该文件中的属性值会经常需要改动,就会使项目整体的体验变得非常差,而且出错率也极高。
这时候,我们可以使用profile在不同的环境下配置不同的配置文件,这样一来,在SpringBoot项目中就出现了多环境的配置文件。
1.2多环境配置的设置
创建多环境配置文件时,需要遵循SpringBoot允许的命名约定来命名,格式为:application-{profile}.properties。
例如:
开发环境:application-dev.properties
生产环境:application-prod.properties
测试环境:application-test.properties
默认环境:application.properties
多环境配置文件和application.properties文件一样可以放置在项目中四个位置任意一处
1.3多环境的切换
项目如何切换到其他环境的配置文件?
在application.properties中,设置spring.profiles.active来具体激活一个或者多个配置文件,如果没有指定任何profile的配置文件的话,springboot默认会启动application-default-default.properties(默认环境)。
例如:spring.profiles.active=dev
dev就是配置文件名中的名称
开发环境。
1.4命令行设置属性值
除了通过设置配置文件来修改属性外,还可以通过命令行来修改属性值。在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识,所以,java-jar xxx.jar--server.port=8888命令等价于我们在application.properties中添加属性server.port=8888。
通过命令行来修改属性值确实比较便利,但是通过命令行就能更改应用运行的参数,对于项目的安全性构成了一定的威胁。所以SpringBoot框架中也提供了屏蔽命令行访问属性的设置,加入:SpringApplication.setAddCommandLineProperties(false)就可以屏蔽。
![](https://i-blog.csdnimg.cn/blog_migrate/73d0120b28ea56854b4ce748e8dd584a.png)
2、自定义属性
SpringBoot可以在配置文件中修改默认约定的属性值,还可以添加一些自己需要的属性,也就是可以自定义一些属性,这些自定义的属性可以使用@Value注解将属性值注入到beans中,或者使用@ConfigurationProperties注解将属性值绑定到结构化的beans中。
2.1配置文件中的自定义属性
自定义的属性可以放到application.properties或者application.yml全局配置文件中,也可以自定义配置文件中定义。
![](https://i-blog.csdnimg.cn/blog_migrate/57f58527ee13ecfba865ac9c4fbd52ae.png)
2.2绑定属性值
定义一个Student类需要添加@Component注解,让spring在启动的时候扫描到该类,并添加到spring容器中。给属性绑定值,有两种方法:
2.3@Value的使用
@Value注解可以绑定属性值,但是只能绑定简单类型的属性值,通常用SpEL方式绑定。
例如:
1.
![](https://i-blog.csdnimg.cn/blog_migrate/a674039d5d34d1c9670b022fb9eb6947.png)
2.getter/setter方法+toString方法
3.在controller层添加:
![](https://i-blog.csdnimg.cn/blog_migrate/81b226725e531e07914358e003d9caec.png)
必须使用@Autowired,自动注入,自己手动new没有作用,不能绑定值。
4.启动项目,在网页运行页面,然后在控制台会输出
![](https://i-blog.csdnimg.cn/blog_migrate/67d7e41a13d7323881bdd548c4f43413.png)
2.4@ConfigurationProperties的使用
@ConfigurationProperties用于批量的为属性绑定值,可以用于任何数据类型,使用时需要指定配置文件的属性前缀。
![](https://i-blog.csdnimg.cn/blog_migrate/29e18dc430346e291a95a6a2158026a4.png)
3、随机数配置
SpringBoot支持在系统加载时配置随机数,使用${random}可以生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如生成int值、long值、string字符串。
3.1定义随机数
![](https://i-blog.csdnimg.cn/blog_migrate/5e40c1ce4e26178b06e1caca056e500a.jpeg)
3.2绑定属性值
![](https://i-blog.csdnimg.cn/blog_migrate/868202e2f32bc28f075804cc0dca1a5e.png)
3.3在Controller中添加
![](https://i-blog.csdnimg.cn/blog_migrate/ccc42917adb0bdd3f743aeeca387f261.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a7cf527799b124bc2d9505dca977fe41.jpeg)
扩展:
使用@Value绑定复杂的数据类型,比如数组,集合
1.属性文件
![](https://i-blog.csdnimg.cn/blog_migrate/bfa6c8af55a09fc41d25e415c26edb82.png)
修改为
![](https://i-blog.csdnimg.cn/blog_migrate/a42563980a671051260f2f993c1c2fa7.png)
2.绑定
![](https://i-blog.csdnimg.cn/blog_migrate/fb572df019855bfbfb0e6def746fe214.png)