spring boot 配置文件有哪几种类型?

2021-04-14 18:49发布

10条回答
JJN
1楼 · 2021-04-15 09:48.采纳回答

SpringBoot中的配置文件主要有三种格式,properties、yaml、和xml方式。

- 其中properties格式配置文件后缀是.properties,配置项为:server.port = 9090
- yaml格式配置文件后缀是.yml,配置项是:server.port: 9090

在SpringBoot中,使用最广泛的配置文件是yaml,yaml之所以流行,除了他配置语法精简之外,还因为yaml是一个跨编程语言的配置文件。

在SpringBoot中,除了yaml之外,properties也比较常用,但是XML几乎不用,看得出来Spring团队非常痛恨XML配置文件!认为它不是一个好的语言。

三岁奶猫
2楼 · 2021-04-15 13:12

Properties和yaml两种吧,其实只是格式不一样。本质上没什么区别

风中浪子
3楼 · 2021-04-16 14:00

1).properties
    app.user.name = javastack


2).yml
    app:
      user:
    name: javastack

灰机带翅膀
4楼 · 2021-04-16 14:33

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用

application.properties或者application.yml(application.yaml)进行配置。

SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件 其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置。


有点好奇
5楼 · 2021-04-16 14:52

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。

雁南飞
6楼 · 2021-04-16 18:37

  .properties 和 .yml,它们的区别主要是书写格式不同。
    1).properties
    app.user.name = javastack
    2).yml
    app:
      user:
    name: javastack
    另外,.yml 格式不支持 @PropertySource 注解导入配置。

我的网名不再改
7楼 · 2021-04-17 15:30

1.使用@Value注解


使用@Value注解加载单个属性值


如果在yaml或者properteis中存在配置:


baidu.token = h4f644y9e4th64kyukl4uil4td4f3h

baidu.username = 157562358985




@Component("policyCheck1001")

@Slf4j

public class PolicyCheck1001 implements PolicyCheckHandler {

//读取配置文件中baidu.token 的值

    @Value("${baidu.token}")

    private String token;

    //读取配置文件中baidu.username 的值

  @Value("${baidu.username}")

    private String username;

 


}


2.使用@ConfigurationProperties注解


使用@ConfigurationProperties注解可以加载一组属性的值,针对于要加载的属性过多的情况,比@Value更加简洁。


如果在yaml或者properteis中存在配置:


baidu.token = h4f644y9e4th64kyukl4uil4td4f3h

baidu.username = 157562358985




@Component

@Slf4j

@ConfigurationProperties(prefix ="baidu")  //指定加载配置的前缀

public class BaiDuConfig {

    private String token;

  

    private String username;

 

}


3.读取指定文件中的内容@PropertySource+@Value


有些时候我们需要从自己定义的配置文件中加载属性值,这个时候就需要用@PropertySource+@Value注解来配合使用了。


如resources目录下存在Config.properties文件,需要加载其中的token和username属性:


@Component

@Slf4j

@PropertySource(value = {"Config.properties"})  //指定加载配置的前缀

public class BaiDuConfig {

   //读取配置文件中baidu.token 的值

    @Value("${baidu.token}")

    private String token;

    //读取配置文件中baidu.username 的值

  @Value("${baidu.username}")

    private String username;

 

}


这里需要注意的是@PropertySource是用来加载我们自定义的properties文件的。针对yaml文件不生效。


4.读取指定文件中的内容@PropertySource+@ConfigurationProperties


如resources目录下存在Config.properties文件,需要加载其中的token和username属性:


@Component

@Slf4j

@ConfigurationProperties(prefix ="baidu")

@PropertySource(value = {"Config.properties"})  //指定加载配置的前缀

public class BaiDuConfig {

   //读取配置文件中baidu.token 的值

    private String token;

    //读取配置文件中baidu.username 的值

    private String username;

 

}


5.使用springBoot的Environment接口获取配置


Environment这个接口我们平时不是很常用,但是这是spring很重要的一个接口。


org.springframework.core.env.Environment是当前应用运行环境的公开接口,主要包括应用程序运行环境的两个关键方面:配置文件(profiles)和属性。Environment继承自接口PropertyResolver,而PropertyResolver提供了属性访问的相关方法。这篇文章从源码的角度分析Environment的存储容器和加载流程,然后基于源码的理解给出一个生产级别的扩展。


我们可以debug看一下Environment的内容:


在这里插入图片描述


@Slf4j

@RestController

@RequestMapping("/hello")

public class BaiDuConfig {

@Autowired

    private Environment environment;

    

    @RequestMapping("/test002")

    public void test04(){

      //通过Environment获取配置

        String property = environment.getProperty("baidu.token");

        System.out.println(property);

    }


 

}


迷恋
8楼 · 2021-04-20 16:32

SpringBoot中的配置文件主要有三种格式,properties、yaml、和xml方式。

- 其中properties格式配置文件后缀是.properties,配置项为:server.port = 9090
- yaml格式配置文件后缀是.yml,配置项是:server.port: 9090

在SpringBoot中,使用最广泛的配置文件是yaml,yaml之所以流行,除了他配置语法精简之外,还因为yaml是一个跨编程语言的配置文件。

希希
9楼 · 2021-04-20 20:00

SpringBoot中的配置文件主要有三种格式,properties、yaml、和xml方式。

- 其中properties格式配置文件后缀是.properties,配置项为:server.port = 9090
- yaml格式配置文件后缀是.yml,配置项是:server.port: 9090

在SpringBoot中,使用最广泛的配置文件是yaml,yaml之所以流行,除了他配置语法精简之外,还因为yaml是一个跨编程语言的配置文件。

在SpringBoot中,除了yaml之外,properties也比较常用,但是XML几乎不用,看得出来Spring团队非常痛恨XML配置文件!认为它不是一个好的语言

相关问题推荐

  • 回答 2

    Statement的execute(String query)方法用来执行任意的SQL查询,如果查询的结果是一个ResultSet,这个方法就返回true。如果结果不是ResultSet,比如insert或者update查询,它就会返回false。我们可以通过它的getResultSet方法来获取ResultSet,或者通过getUpda...

  • 回答 22

    忙的时候项目期肯定要加班 但是每天加班应该还不至于

  • 回答 108
    已采纳

    虽然Java人才越来越多,但是人才缺口也是很大的,我国对JAVA工程师的需求是所有软件工程师当中需求大的,达到全部需求量的60%-70%,所以Java市场在短时间内不可能饱和。其次,Java市场不断变化,人才需求也会不断增加。马云说过,未来的制造业要的不是石油,...

  • 回答 5
    已采纳

    工信部证书含金量较高。工信部是国务院的下属结构,具有发放资质、证书的资格。其所发放的证书具有较强的权威性,在全国范围内收到认可,含金量通常都比较高。 工信部证书,其含义也就是工信部颁发并承认的某项技能证书,是具有法律效力的,并且是国家认可的...

  • 回答 70
    已采纳

    学Java好不好找工作?看学完Java后能做些什么吧。一、大数据技术Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java 的 HBase和Accumulo以及ElasticSearchas。但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮...

  • 回答 16
    已采纳

    就是java的基础知识啊,比如Java 集合框架;Java 多线程;线程的五种状态;Java 虚拟机;MySQL (InnoDB);Spring 相关;计算机网络;MQ 消息队列诸如此类

  • 回答 12

    #{}和${}这两个语法是为了动态传递参数而存在的,是Mybatis实现动态SQL的基础,总体上他们的作用是一致的(为了动态传参),但是在编译过程、是否自动加单引号、安全性、使用场景等方面有很多不同,下面详细比较两者间的区别:1.#{} 是 占位符 :动态解析 ...

  • 回答 62

    没问题的,专科学历也能学习Java开发的,主要看自己感不感兴趣,只要认真学,市面上的培训机构不少都是零基础课程,能跟得上,或是自己先找些资料学习一下。

  • 回答 4

    1、反射对单例模式的破坏采用反射的方式另辟蹊径实例了该类,导致程序中会存在不止一个实例。解决方案其思想就是采用一个全局变量,来标记是否已经实例化过了,如果已经实例化过了,第 二次实例化的时候,抛出异常2、clone()对单例模式的破坏当需要实现单例的...

  • 回答 5

     优点: 一、实例控制  单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 二、灵活性  因为类控制了实例化过程,所以类可以灵活更改实例化过程。 缺点: 一、开销  虽然数量很少,但如果每次对象请求引用时都要...

  • 回答 4

    这个主要是看你数组的长度是多少, 比如之前写过的一个程序有个数组存的是各个客户端的ip地址:string clientIp[4]={XXX, xxx, xxx, xxx};这个时候如果想把hash值对应到上面四个地址的话,就应该对4取余,这个时候p就应该为4...

  • 回答 6

     哈希表的大小 · 关键字的分布情况 · 记录的查找频率 1.直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)。...

  • 回答 6

    哈希表的大小取决于一组质数,原因是在hash函数中,你要用这些质数来做模运算(%)。而分析发现,如果不是用质数来做模运算的话,很多生活中的数据分布,会集中在某些点上。所以这里最后采用了质数做模的除数。 因为用质数做了模的除数,自然存储空间的大小也用质数了...

  • 回答 2

    是啊,哈希函数的设计至关重要,好的哈希函数会尽可能地保证计算简单和散列地址分布均匀,但是,我们需要清楚的是,数组是一块连续的固定长度的内存空间

  • 回答 3

     解码查表优化算法,seo优化

  • 回答 5

    1.对对象元素中的关键字(对象中的特有数据),进行哈希算法的运算,并得出一个具体的算法值,这个值 称为哈希值。2.哈希值就是这个元素的位置。3.如果哈希值出现冲突,再次判断这个关键字对应的对象是否相同。如果对象相同,就不存储,因为元素重复。如果对象不同,就...

没有解决我的问题,去提问