项目根目录的config下(同pom文件在一级的目录)--> 项目根目录下-->resources根目录的config下-->resources根目录下 ,
四个目录均可以同时存在,文件不会覆盖,比如在级别1写的配置不会被级别2的覆盖,项目启动后级别1与级别2中的配置均可以读到,但是若配置名一样,则优先读取到配置1中的,
1)读取环境中的配置
@Autowired
private ApplicationContext acx;
@RequestMapping(value = "/prop",method = RequestMethod.GET)
@ResponseBody
public String prop(){
String jdbcUrl = acx.getEnvironment().getProperty("jdbc.urL.ss");
return jdbcUrl;
}
2)启动类中制定读取的配置文件:可以读取properties也可以读取默认application的其他格式配置文件
new SpringApplicationBuilder(MyApp.class).properties(
"spring.config.location=classpath:/application.yml"
).run(args);
3)代码中设置配置
new SpringApplicationBuilder(TestApp.class).properties(
"spring.profiles.active=linux"
).run(args);
properties文件写法:允许字符.字符,键值用=号连接
server.port=8090
server.session-timeout=30
server.context-path=
server.tomcat.max-threads=0
server.tomcat.uri-encoding=UTF-8
spring.datasource.url = jdbc:mysql://localhost:3306/aaa
spring.datasource.username = root
spring.datasource.password = mymysql
spring.datasource.driverClassName = com.mysql.jdbc.Driver
yml配置文件 树状,按顺序执行 键值用: 连接,且: 后有空格,
server:
port: 8090
session-timeout: 30
tomcat.max-threads: 0
tomcat.uri-encoding: UTF-8
spring:
datasource:
url : jdbc:mysql://localhost:3306/aaa
username : root
password : mymysql
driverClassName : com.mysql.jdbc.Driver
配置profiles是可以选择对应的环境的,简单应用:
spring:
profiles: windows
jdbc:
urL:
ss: 999
---
spring:
profiles: linux
jdbc:
urL:
ss: 1111
sz: 1111
server:
port: 8090
在启动类中指定环境,即可进行切换
new SpringApplicationBuilder(TestApp.class).properties(
"spring.profiles.active=linux"
).run(args);
另外外部的配置参数优先级更高:
如在main方法中传入的配置
public static void main(String[] args){
SpringApplicationBuilder builder = new SpringApplicationBuilder(TestApp.class).properties(
"spring.profiles.active=linux"
);
builder.run(args);
}
还有java -jar 传入的参数优先级最高
这里就不贴代码了