spring boot 读取配置文件

1.在springboot启动时未指定配置文件目录的话spring会有一个查找读取配置文件的顺序

项目根目录的config下(同pom文件在一级的目录)--> 项目根目录下-->resources根目录的config下-->resources根目录下 ,

四个目录均可以同时存在,文件不会覆盖,比如在级别1写的配置不会被级别2的覆盖,项目启动后级别1与级别2中的配置均可以读到,但是若配置名一样,则优先读取到配置1中的,

2.配置读取方法

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);

3.配置文件写法

 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 传入的参数优先级最高

这里就不贴代码了

你可能感兴趣的:(java,springboot)