300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > springBoot使用spring.profiles.activ区分生产/开发环境

springBoot使用spring.profiles.activ区分生产/开发环境

时间:2019-02-16 03:40:38

相关推荐

springBoot使用spring.profiles.activ区分生产/开发环境

spring boot 提供

spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

profile的配置文件可以按照application.properyies的放置位置一样,放于以下四个位置:

当前项目根目录的 “/config”的子目录下

当前项目根目录下

classpath根目录的“/config”包下

classpath的根目录下

demo演示

定义俩个properties文件,

application-dev.properties和application-prod.properties,

并在俩个文件中都分别

开发环境server.port=8081

生产环境server.port=8082

在application.properyies也写上,并把profile切换到application-dev.properties的配置文件

#banner关掉spring.main.banner-mode=offserver.port=8093spring.profiles.active=dev

启动SpringbootApplication主程序入口,在控制台下打印出启动tomcat的端口号为配置文件application-dev.properties设置的8081

除了可以用profile的配置文件来分区配置我们的环境变量,在代码里,我们还可以直接用@Profile注解来进行配置,@Profile可以作用于方法或类上。

定义一个User类

@Data@NoArgsConstructor@AllArgsConstructorpublic class User {private Integer id;private String name;private String address;}

创建ProfilesConfig 类,创建一个id为profilesConfig1的bean,在开发环境下内容为id=1的User对象;在生产环境下内容为id=1的User对象

@Configurationpublic class ProfilesConfig {@Bean("profilesConfig1")@Profile("prod")public User getUser1(){return new User(1, "李磊磊1", "北京市");}@Bean("profilesConfig1")@Profile("dev")public User getUser2(){return new User(2, "李磊磊1", "北京市");}}

application-dev.properties的配置文件

#banner关掉spring.main.banner-mode=offserver.port=8093spring.profiles.active=dev

运行SpringbootApplicationTests,打印id为profilesConfig1的bean,控制台显示为测试环境下的profilesConfig1,id=2的user

@SpringBootTestclass SpringbootApplicationTests {@Autowired@Qualifier("profilesConfig1")private User profilesConfig1;@Testvoid contextLoads() {System.out.println(profilesConfig1);}}

注:

除了spring.profiles.active来激活一个或者多个profile之外,还可以用spring.profiles.include来叠加profile

spring.profiles.include=dev,prod

通过命令行设置

在命令行运行时,连续的两个减号–就是对application.properties中的属性值进行赋值的标识。java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888。

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。

如果不在application.properties设置spring.profiles.active,也可以在运行jar的时候,使用java -jar xxx.jar --spring.profiles.active=***命令行指定加载配置文件

执行java -jar xxx.jar --spring.profiles.active=dev,可以观察到服务端口被设置为9090,也就是测试环境的配置(test)执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为80,也就是生产环境的配置(prod)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。