spring boot怎么配置文件类型的properties格式与yml格式-mile米乐体育
spring boot怎么配置文件类型的properties格式与yml格式
本篇内容介绍了“springboot怎么配置文件类型的properties格式与yml格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一 配置文件类型
spring boot默认支持properties和yml两种格式的配置文件。yml格式是天然的树状接口,相对于properties,yml更加的一目了然。这也是我们推荐的配置文件格式。
properties 格式举例:
server.port=8090server.session-timeout=30server.tomcat.max-threads=0server.tomcat.uri-encoding=utf-8spring.datasource.url=jdbc:mysql://localhost:3306/newbirdsspring.datasource.username=rootspring.datasource.password=mymysqlspring.datasource.driverclassname=com.mysql.jdbc.driverspring.jpa.database=mysqlspring.jpa.show-sql=truespring.jpa.hibernate.ddl-auto=updatespring.jpa.hibernate.naming-strategy=org.hibernate.cfg.improvednamingstrategyspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.mysql5dialect
yml 格式举例:
server:port:8090session-timeout:30tomcat.max-threads:0tomcat.uri-encoding:utf-8spring:datasource:url:jdbc:mysql://localhost:3306/newbirdsusername:rootpassword:mymysqldriverclassname:com.mysql.jdbc.driverjpa:database:mysqlshow-sql:truehibernate:ddl-auto:updatenaming-strategy:org.hibernate.cfg.improvednamingstrategyproperties:hibernate:dialect:org.hibernate.dialect.mysql5dialect
二 配置文件
2.1 核心配置文件
spring boot默认支持两种核心配置文件:bootstrap.yml(bootstrap.properties)、application.yml(application.properties)。bootsrap先加载。
2.1.1 bootstrap.yml(bootstrap.properties)
bootstrap.yml用于应用程序上文的引导节点,由父spring applicationcontext加载。我们可以简单的把bootstrap里面的配置信息理解成系统级别的参数。这些参数轻易是不会改变的。
bootstrap配置文件有以下几个应用场景:
使用spring cloud config的时候,需要将spring.application.name和spring.cloud.config.server.git.uri写入bootstrap.yml。
一些固定的不能被覆盖的属性。
一些加密/解密的场景。会把encryption/decryption(加密/解密)存储在bootstrap.yml里面。
一旦bootstrap.yml 被加载,则内容不会被覆盖,即便后期加载的application.yml的内容标签与bootstrap的标签一致,application 也不会覆盖bootstrap。
2.1.2 application.yml(application.properties)
application.yml是我们用的最多的一个配置文件.一般配置应用级别的配置,比如数据库的连接配置,如果我们用到了redis可能会写一些redis相关的配置等等。
2.2 自定义配置文件
为了不破坏核心文件的原生态,但又需要有自定义的配置信息存在,一般情况下会选择自定义配置文件来放这些自定义信息,比如我们在resource目录下创建一个product.properties文件.
resources/product.properties文件内容如下:
ppid=1000mmid=1ccid=10
三 配置文件读取
3.1 读取核心配置文件信息
读取核心配置文件信息值的是读取bootstrap.yml(bootstrap.properties)、application.yml(application.properties)文件里面的信息.
3.1.1 environment方式
这种方式是依赖注入evnironment来完成,在创建的成员变量private environment env上加上@autowired注解即可完成依赖注入,然后使用env.getproperty("键名")即可读取出对应的值。比如如下的代码.
application.yml文件里面添加我们自定义的属性:
#自定义的一些属性user:info:name:tuacyage:27
environment方式读取配置信息:
@runwith(springrunner.class)@springboottest()publicclasspropertiestest{privateenvironmentenvironment;@autowiredpublicvoidsetenvironment(environmentenvironment){this.environment=environment;}@testpublicvoidtest(){stringname=environment.getproperty("user.info.name");integerage=environment.getproperty("user.info.age",integer.class);system.out.println("name=" name ";age=" age);}}
3.1.2 @value方式
在@value的${}中包含的是核心配置文件中的键名就可以得到对应的值.
@runwith(springrunner.class)@springboottest()publicclasspropertiestest{@value("${user.info.name}")privatestringname;@value("${user.info.age}")privateintage;@testpublicvoidtest(){system.out.println("name=" name ";age=" age);}}
3.1.3 @configurationproperties方式
@configurationproperties使用的时候对应的属性类一定要记得加上@configuration或者在任何一个配置类(推荐启动类上)通过@enableconfigurationproperties注解指定自定义的属性类.推荐直接在属性类上添加@configuration注解.
@configuration@configurationproperties(prefix="user.info")publicclassuserinfo{privateintage;privatestringname;publicstringgetname(){returnname;}publicvoidsetname(stringname){this.name=name;}publicintgetage(){returnage;}publicvoidsetage(intage){this.age=age;}}
3.2 读取自定义配置文件信息
3.2.1 @propertysource @value
@propertysource @value使用于读取property根式配置文件的信息.@propertysource指定配置文件路径和编码格式,@value指定配置文件里面的key值.
自定义的配置文件 product.properties:
ppid=1000mmid=1ccid=10
对应的读取方式:
@configuration@propertysource(value="classpath:product.properties",encoding="utf-8")publicclassproductinfo{@value("${ppid}")privateintpid;@value("${mmid}")privateintmid;@value("${ccid}")privateintcid;publicintgetpid(){returnpid;}publicvoidsetpid(intpid){this.pid=pid;}publicintgetmid(){returnmid;}publicvoidsetmid(intmid){this.mid=mid;}publicintgetcid(){returncid;}publicvoidsetcid(intcid){this.cid=cid;}}
3.2.2 @configurationproperties @propertysource @value
@configurationproperties @propertysource @value适用于读取yml格式配置文件信息.@propertysource指定配置文件路径和编码格式,@configurationproperties和@value指定配置文件里面的key值.
配置文件:
admin:user:name:tuacyage:25
对应配置文件的读取方式:
@configuration@propertysource(value="classpath:role.yml")@configurationproperties(prefix="admin.user")publicclassroleuserinfo{@value("${name}")privatestringname;@value("${age}")privateintage;publicstringgetname(){returnname;}publicvoidsetname(stringname){this.name=name;}publicintgetage(){returnage;}publicvoidsetage(intage){this.age=age;}}
四 配置文件的加载顺序
优先级由高到底,高优先级的配置会覆盖低优先级的配置,
全部加载配置文件并互补配置.
4.1 项目内部配置文件加载顺序
springboot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。可放置目录(优先级从高到低)
当前项目根目录下的config目录下。
当前项目根目录下。
resources目录下的config目录下。
resource目录下。
4.2 项目外部配置文件加载顺序
优先级由高到低:
命令行参数
来自java:comp/env的jndi属性
java系统属性(system.getproperties())
操作系统环境变量
randomvaluepropertysource配置的random.*属性值
jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包外部的application.properties或application.yml(不带spring.profile)配置文件
jar包内部的application.properties或application.yml(不带spring.profile)配置文件
@configuration注解类上的@propertysource
通过springapplication.setdefaultproperties指定的默认属性
“springboot怎么配置文件类型的properties格式与yml格式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!