一.springboot的多配置文件应对场景
介绍:在实际开发的时候,工程会有多个环境,开发环境,测试环境,生产环境,实际上线时,每个环境的数据库地址,服务器端口号等配置会有所不同,所以针对每一个环境,需要一个配置文件,只需要在主配置文件中启动对应的环境的配置文件。
二.springboot的多配置文件的命名方式
#主配置文件
application.properties
#对应环境的配置文件
application-dev.properties
application-test.properties
application-prod.properties
在对应环境拿到工程后需要切换对应的配置文件,只需要在application.properties文件中进行配置那个配置文件启用。
#这样会加载application-test.properties配置文件
spring.profiles.active = test
三.实际生产中指定配置文件生效
#这是springboot在外部指定配置文件生效,
java -jar app.jar --spring.profiles.active=dev--server.port=8060
四.配置多环境日志
logging.config=classpath:logging/logback-${spring.profiles,active}.xml
当环境切换时,会同时切换对应的日志后缀名,这样就可以做到切换配置文件时切换日志文件的后缀名
五.一个环境使用多个配置文件
spring.profiles.include= devFile,devIO
这样设置可以在单个环境中使用多个配置文件
*当多环境文件重复设置时,会以include文件的设置的最后一个的设置为准,可以理解为,从前到后覆盖配置。
六.在某个配置文件中引用其他配置文件的内容
使用${}的形式去调用其他配置文件当中的内容
七.配置文件优先级
#高等级的配置文件会覆盖低等级的同等配置文件
#1.--项目根目录config文件夹里边(优先级最高)
/config
#2.--项目根目录
/
#3.--src/main/resources/config/文件夹里面
classpath:/config
#4.--src/main/resources/
classpath:/
#1-4优先级从高到低,优先级高的配置文件会覆盖优先级低的配置文件内容
八.工程部署时外部指定配置文件
java -jar app.jar --spring.config.logcation=D:/application.properties
九.通过配置文件来动态的设置参数的值(灵活,多变,可以在项目部署时随意修改参数的值)
(1)通过注解形式读取配置文件的路径,来读取配置文件中的变量
/**
*获取配置文件中的值
*/
@Controller
@PropertySource("classpath:application-test1.properties") //@PropertySource()用来读取配置文件所在的位置
public class test1 {
@Value("${server.port}") //通过Value注解来读取配置文件中的值
private String serverPort;
@RequestMapping(value = "/test")
@ResponseBody
public String getServerPort(){
return serverPort;
}
}
(2)通过Environment 来获取配置文件
/**
*获取配置文件中的值
*/
@Controller
public class test1 {
@Autowired
private Environment environment;
@RequestMapping(value = "/test")
@ResponseBody
public String getServerPort(){
return environment.getProperty("server.port");
}
}
(3)通过@ConfigurationProperties(prefix = “配置文件中的前缀”)
@Component
@ConfigurationProperties(prefix = "nnn")
@Data
public class configurationTest {
private String name;
}
prefix是前缀的意思,在配置文件中的前缀
server.port=8085
nnn.name = "zestful"
*注意一点,使用ConfigurationProperties的类文件一定要能被spring检测到,可以使用三种方式
直接在类的上边添加@Component
通过测试类在spring容器中进行注册
直接在springboot启动类上边注解的地方添加类