Springboot 项目属性配置文件

一. SpringBoot配置文件的加载顺序

Springboot 中我们通常用的配置文件有两种形式:yml和properties。SpringBoot项目启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件,具体的目录位置如下:

  • file:./config/ ( 项目根路径下的config文件夹)
  • file:./ (项目根路径)
  • classpath:/config/ (类路径下的config文件夹)
  • classpath:/ (类路径)

SpringBoot会从这四个位置全部加载主配置文件; 高优先级的配置会覆盖低优先级的配置,没有的配置进行互补配置 互补配置;


我们还可以通过 spring.config.location 来改变默认的配置文件位置 , 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件 共同起作用形成互补配置:

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties

二. 如果yml和properties同时存在,springboot会优先properties文件

例如下面例子:

----application.properties内容:
server.port=8082


----application.yml内容:
server:
  port: 8081

https://pic4.zhimg.com/v2-2a1d8ed61dfb6afba22ec715391526f7_b.jpg

启动初始springboot的order项目:

三. application.yml与bootstrap.yml的区别

加载顺序

若application.yml 和bootstrap.yml 在同一目录下:bootstrap.yml 先加载 application.yml后加载。bootstrap.yml 用于应用程序上下文的引导阶段。bootstrap.yml 由父Spring ApplicationContext加载。

配置区别

bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。

application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。内容可以被后续覆盖。


总结

  • bootstrap.yml(bootstrap.properties) 和 application.yml(application.properties)都可以被springboot加载 ,bootstrap优先application加载,且bootstrap是只读不可覆盖,application可以被后续覆盖。
  • 同一配置文件类型(都是 application.xxx )时 , properties 优先级高于yml。
  • springboot还可以通过 --spring.config.location 启动参数指定外部加载路径。

http://application.xxx


四. 如何获取到属性文件的值

@Value 注解用于读取 Java 代码中的环境或应用程序属性值。读取属性值的语法如下所示:

@SpringBootApplication
@RestController
public class DemoApplication {
   @Value("${spring.application.name}")
   private String name;
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @RequestMapping(value = "/")
   public String name() {
      return name;
   }
}

注意 - 如果在运行应用程序时找不到该属性,Spring Boot 会抛出非法参数异常,因为 无法解析占位符 'spring.application.name' in value "${spring.application.name}"

为了解决占位符问题,我们可以使用下面给出的语法设置属性的默认值 :

@Value("${property_key_name:default_value}")

五. 常用属性配置

1、简单配置

#应用名称
spring.application.name=apply
#端口号
server.port=8888
#多环境配置测试生产用不同的配置文件
spring.profiles.active=test
#session超时单位秒
server.session.timeout=30
#配置项目访问路径不配置就是直接访问Controller中@RequestMapping("/test")#路径若配置了这个属性访问时在原controller路径的基础上加上上下文路径这个
#配置在nginx分发时有很大用处
server.context-path=/ect/apply/baic
#HTTP请求最大值
server.max-http-header-size=10000000

2、数据库连接配置

spring.datasource.url=jdbc:oracle:thin:@//172.20.2.44:1521/testdb
spring.datasource.username=test
spring.datasource.password=test123
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.minIdle=5
spring.datasource.maxActive=400
spring.datasource.initialSize=10
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasourc.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=50
spring.datasource.removeAbandoned=true
spring.datasource.filters=stat 

3、redis配置

spring.redis.host=172.30.2.134
spring.redis.port=6379
spring.redis.timeOut=5000
spring.redis.maxIdle=50
spring.redis.maxWaitMillis=5000
spring.redis.maxActive=300

4、tomcat配置

#tomcat最大线程数
server.tomcat.max-threads= 2000
#tomcat最大连接数
server.tomcat.max-connections= 500
#编码方式
server.tomcat.uri-encoding=UTF-8
#post提交数据最大大小设置为0不限制
server.tomcat.max-http-post-size=0

5、Mybatis配置

#mybatis
mybatis.mapperLocations=classpath:mapper/*.xml
#mybatis.type-aliases-package=com.mundo.test.pojo
mybatis.configLocation=classpath:mybatis/mybatis-config.xml

推荐一个Java架构师博客,带你一起写架构:

JAVA架构师修炼

支付宝打赏 微信打赏

如果文章对您有帮助,您可以鼓励一下作者