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格式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

    展开全文
    内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

    最新文章

    网站地图