SpringBoot---高级特性-->>ProFile功能
1、ProFile功能
为了适配多环境配置SpringBoot专门提供的。简化了 profile功能
使用上只需要引入 web 开发场景就能用这一项功能了
假设有这么一个场景,在程序开发阶段和生成阶段用到的配置不一样,开发阶段用的是本机上的资源工具,生产阶段用的是线上的资源工具,配置可能要重写。所以这个功能就很厉害。
就可以通过编写多个配置类,按照规定的名称署名,在主配置文件中配置声明要赢用哪一种配置文件,做到调控程序。
有三种方式:一种是配置文件指定配置,一种是使用注解 @Profile 标注类或方法,一种是配置文件中以声明 group 分组的形式进行指定配置分组
1、配置文件方式
有四个配置文件:application.properties、application-others.yaml、application-prod.yam、 application-test.yaml
application里面
spring.profiles.active= test
peson.name= default-name
spring.profiles.group.prodAll= prod,others
spring.profiles.group.test= test
application-prod里面
person:
name: prod-name
server:
port: 8088
application-test里面
person:
name: test-name
server:
port: 8090
application-other里面
person:
age: 18
创建了一个person类
将他跟配置文件中的 person 字段绑定
@Component
@Data
@ConfigurationProperties("person")
public class Person {
private String name;
private Integer age;
}
再写一个 RestController
@RestController
public class ProFileController {
@Autowired
Person person;
@RequestMapping("/")
public String test1() {
return person.toString();
}
}
然后就能通过修改 主配置文件中的 spring.profiles.active 属性值规定其他 配置文件的是否活跃。在启动时就会带着这个配置文件的配置一起加载。加载日志就会显示 The following 1 profile is active: "test" 当前跟随启动的配置文件。
如果当前项目打成了jar 包,想切换active的值,但是无法修改里面的配置,可以通过命令行的方式【gan刚接触SpringBoot时,就知道SpringBoot应用打包后支持命令行方式启动】 java -jar features-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --person.age=9090 启动程序命令后面能加上对配置文件项的修改。以命令行方式优先
2、配置文件分组
通过配置 spring.profiles.group.分组名 值设置一个配置文件组,然后在spring.profile.active后面加上想启动的组名,那一整个组就启动了。
3、@Profile 注解条件装配
假如有些组件需要分环境加载,就能在配置类里面,添加组件的方法/类上面加 @Profile("哪个环境") ,然后再在配置文件里面指定环境。就能加载出来组件。

浙公网安备 33010602011771号