springboot开发环境生产环境配置文件切换

一、单个文件切换环境里,在application.yml配置文件中添加如下信息

server:
  port: 8081
spring:
  profiles:
    active: prod #激活prod生产环境

---
server:
  port: 8083
spring:
    profiles: dev

---
server:
  port: 8084
spring:
  profiles: prod

二、或者修改idea里面的启动d的命令行参数
主要也是在本地开发时候使用
idea在启动的时候会优先加载这里面设置的参数内容
springboot开发环境生产环境配置文件切换_第1张图片

三、修改虚拟机参数配置
添加 -Dspring.profiles.active=dev
springboot开发环境生产环境配置文件切换_第2张图片

四、当项目打包之后部署的时候也可以修改其部署环境

java -jar .\springbootStudy-1.0-SNAPSHOT.jar --spring.profiles.active=dev

五、@Profile实现条件装配功能
比如在类上面添加注解@Profile(“prod”)即可实现不同环境下的切换
application-prod.yaml配置文件

person:
  username: prod_user
  age: 12

application-test.yaml配置文件

person:
  username: test_user
  age: 33

创建一个新的接口Person

public interface Person {
    String getUsername();
    Integer getAge();
}

Person的两个实现类Boss和Worker,要求Boss在pro开发环境下生效,Woker在test环境下生效,就可以如下配置

@Profile("prod")
@Component
@ConfigurationProperties("person")
@Data
public class Boss implements Person {
    private String username;
    private Integer age;
}

@Profile("test")
@Component
@ConfigurationProperties("person")
@Data
public class Worker implements Person {
    private String username;
    private Integer age;
}

@RestController()
@RequestMapping("/user")
public class UserController {
    @Autowired
    private Person person;
    @GetMapping("/person")
    public Person profiletest(){
        return person;
    }
}

当我们在配置类中页需要根据环境切换参数的时候,也可以使用@Profile条件装配这种方式。

@Configuration
@Profile("prod")
public class Myconfg {
    @Bean
    public MyColor getColor() {
        return new MyColor();
    }

}

六、profile分组管理

是在开发 中我们会遇到编写多个配置文件的情况,对于这么多的配置文件,我们可以进行profile分组管理

springboot开发环境生产环境配置文件切换_第3张图片
在application.properties中添加如下配置信息

#激活prod和pdd两个配置文件
spring.profiles.active=myprod  
spring.profiles.group.myprod[0]=pdd
spring.profiles.group.myprod[1]=prod

# spring.profiles.active=test  激活test配置文件
spring.profiles.group.mytest[0]=test

激活的配置文件是application-pdd.yaml和application-prod.yaml两个文件,
如果还有其他配置文件,直接按照数组顺序添加进来即可。
如果想要激活appplication-test.yaml配置文件,只需要改成spring.profiles.active=mytest即可

你可能感兴趣的:(springboot)