电商运营网站 建设,高端网站制造,黄页88官网,广西模板厂哪家价格低1. 前言
profile用于多环境的激活和配置#xff0c;用来切换生产#xff0c;测试#xff0c;本地等多套不通环境的配置。如果每次去更改配置就非常麻烦#xff0c;profile就是用来切换多环境配置的。
2. 配置方法
三种方式。
2.1 多profile文件方式
在resource目录下新…1. 前言
profile用于多环境的激活和配置用来切换生产测试本地等多套不通环境的配置。如果每次去更改配置就非常麻烦profile就是用来切换多环境配置的。
2. 配置方法
三种方式。
2.1 多profile文件方式
在resource目录下新增三个配置文件分别用于开发环境、测试环境、生产环境
application-dev.propertiesapplication-test.propertiesapplication-prod.properties 注意这里如果使用yml配置文件也是一样的思路application-dev.ymlapplication-test.ymlapplication-prod.yml
在主配置文件中就可以指定当前使用哪个配置文件具体例如
#控制激活指定后缀的文件此时
#application-prod.properties文件会被激活
spring.profiles.activeprod这样就激活了生产环境的配置实际就会使用application-prod.properties或application-prod.yml下的配置。注:yml和properties可以互通application.properties可以激活yml后缀的配置文件同样application.yml也可以激活application.properties文件
2.2 yml多文档方式
上面是通过创建三个配置文件分离了不同环境下的配置然后指定哪个就用哪个。而yml多文档实际上就是在一个yml配置文件下同时放了三个配置用三个横杠分割不同的配置这在yml中就叫做多文档。本质上和方式一思路是一样的。 在每个块下指定自己的配置名称spring.profiles。然后再在最后设置spring.profiles.active以选择激活的配置。
#多文档配置方式
spring:profiles: test
server:port: 9081
--- #分割必须是三个横线不能多不能少
spring:profiles: dev
server:port: 9082
--- #分割必须是三个横线不能多不能少
spring:profiles: prod
server:port: 9083
--- #分割必须是三个横线不能多不能少
spring:profiles:active: prod #激活使用spring.profilesprod的配置块2.3 注解方式
在Spring中可以使用配置文件的方式来指定不同环境下所需要的配置信息。但有时候我们不通过配置文件而是通过配置类的方式来指定不同环境下的配置信息 此时就需要用到Profile注解。 例如我们封装一个数据库的配置 1创建用来封装数据库信息的entity
import lombok.Builder;
import lombok.Data;Builder
Data
public class DBInfoEntity {private String url;private String port;private String userName;private String password;
}2创建个配置接口
public interface Config {// 获取数据库信息DBInfoEntity getDBInfo();// 获取系统URLString getSystemUrl();
}3Profile注解作用于实现的配置类上
我们使用Profile注解分别作用于如下所示的两个配置类上分别指定dev和product环境下才能起作用。我们通过Configuration注解指定两个配置类的Bean名称都是MyConfig一般情况下会报错因为Spring的IOC容器中Bean的名称是唯一的但是我们使用了Profile注解指定了开发环境不满足指定开发环境的配置类不会被添加到Bean中所以不会报错。
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;Configuration(MyConfig)
// 指定开发环境为dev
Profile(dev)
public class MyConfig1 implements Config {Overridepublic DBInfoEntity getDBInfo() {return DBInfoEntity.builder().url(https://127.0.0.1).port(8080).userName(devUser).password(110120).build();}Overridepublic String getSystemUrl() {return https://www.dev.com;}
}import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;Configuration(MyConfig)
// 指定开发环境为product
Profile(product)
public class MyConfig2 implements Config {Overridepublic DBInfoEntity getDBInfo() {return DBInfoEntity.builder().url(https://127.0.0.2).port(8089).userName(prodUser).password(999000).build();}Overridepublic String getSystemUrl() {return https://www.prod.com;}
}4测试
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;Component
public class Test32Controller implements CommandLineRunner {// 注入接口,会自动从IOC容器中获取该接口的实现类Autowiredprivate Config config;Overridepublic void run(String... args) throws Exception {DBInfoEntity dbInfo config.getDBInfo();System.out.println(dbInfo);String systemUrl config.getSystemUrl();System.out.println(systemUrl);}
}5效果 dev环境 product环境
3. 激活方式
激活方式有以下三种。激活顺序优先级命令行参数 虚拟机参数 配置文件
3.1 配置文件内指定激活
就是前面说的在配置文件中通过设置spring.profiles.active选择使用哪个配置文件。
3.2 虚拟机参数VM options
在IDEA中设置
-Dspring.profiles.activetest3.3 命令行参数(program arguments)
在IDEA中设置
--spring.profiles.activedev这样就相当于在启动这个jar包时自动在命令行注入了我们的参数spring.profiles.activedev 当然也可以我们在生产环境中启动jar包时自己在命令行输入参数。具体如下 1打包项目mvn package 2运行项目(以下三个命令之一即可)
#打包的配置文件里的默认激活方式
java -jar .\springboot-profile04-0.0.1-SNAPSHOT.jar#激活dev配置文件运行项目(项目参数)
java -jar .\springboot-profile04-0.0.1-SNAPSHOT.jar --spring.profiles.activedev#激活test配置文件运行项目(虚拟机参数)
java -jar -Dspring.profiles.activetest .\springboot-profile04-0.0.1-SNAPSHOT.jar