SpringBoot的配置文件有哪几种格式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot的配置文件有哪几种格式?相关的知识,希望对你有一定的参考价值。

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

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

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

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

如果你对常见的配置文件有哪几种格式不熟悉,就去黑马程序员官网视频库看免费视频。
参考技术A

SpringBoot属性和配置

1. 在构建时自动扩展属性

您可以使用现有的构建配置自动扩展它们,而不是硬编码在项目的构建配置中也指定的某些属性。这在 Maven 和 Gradle 中都是可能的。

1.1. 使用 Maven 自动扩展属性

您可以使用资源过滤从 Maven 项目中自动扩展属性。如果使用spring-boot-starter-parent,则可以使用@..@占位符引用 Maven 的“项目属性” ,如以下示例所示:

app.encoding=@project.build.sourceEncoding@

app.java.version=@java.version@

如果您不使用 starter parent,则需要在<build/>您的元素中包含以下元素pom.xml:

<resources>

    <resource>

        <directory>src/main/resources</directory>

        <filtering>true</filtering>

    </resource>

</resources>

您还需要在里面包含以下元素<plugins/>:

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-resources-plugin</artifactId>

    <version>2.7</version>

    <configuration>

        <delimiters>

            <delimiter>@</delimiter>

        </delimiters>

        <useDefaultDelimiters>false</useDefaultDelimiters>

    </configuration>

</plugin>

useDefaultDelimiters如果您$placeholder在配置中使用标准 Spring 占位符(例如),则 该属性很重要。如果该属性未设置为false,则构建可能会扩展这些属性。

1.2. 使用 Gradle 自动扩展属性

您可以通过配置 Java 插件的processResources任务来自动从 Gradle 项目扩展属性,如以下示例所示:

processResources

    expand(project.properties)

然后,您可以使用占位符来引用您的 Gradle 项目的属性,如以下示例所示:

app.name=$name

app.description=$www问答网是一款靠谱的问答社区,专注分享知识、经验、观念。在这里,所有人都能找到答案、参与讨论。

2. 外化 SpringApplication 的配置

ASpringApplication具有 bean 属性设置器,因此您可以在创建应用程序时使用其 Java API 来修改其行为。或者,您可以通过在spring.main.*. 例如,在 中application.properties,您可能有以下设置:

spring.main.web-application-type=none

spring.main.banner-mode=off

那么 Spring Boot 横幅不会在启动时打印,应用程序也不会启动嵌入式 Web 服务器。

外部配置中定义的属性会覆盖和替换 Java API 指定的值,主要来源的显着例外。主要来源是提供给SpringApplication构造函数的那些:

import org.springframework.boot.Banner;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication

public class MyApplication


    public static void main(String[] args)

        SpringApplication application = new SpringApplication(MyApplication.class);

        application.setBannerMode(Banner.Mode.OFF);

        application.run(args);

   


或sources(…)a 的方法SpringApplicationBuilder:

import org.springframework.boot.Banner;

import org.springframework.boot.builder.SpringApplicationBuilder;


public class MyApplication


    public static void main(String[] args)

        new SpringApplicationBuilder()

            .bannerMode(Banner.Mode.OFF)

            .sources(MyApplication.class)

            .run(args);

   


鉴于上面的例子,如果我们有以下配置:

spring.main.sources=com.example.MyDatabaseConfig,com.example.MyJmsConfig

spring.main.banner-mode=console

实际应用程序将显示横幅(由配置覆盖)并使用三个来源作为ApplicationContext. 应用程序来源是:

    MyApplication (来自代码)

    MyDatabaseConfig (来自外部配置)

    MyJmsConfig(来自外部配置)

3. 更改应用程序外部属性的位置

默认情况下,来自不同源的属性被添加到弹簧Environment以定义的顺序(参照“的features.html中的”“弹簧引导功能”部分的确切顺序)。

您还可以提供以下系统属性(或环境变量)来更改行为:

    spring.config.name( SPRING_CONFIG_NAME): 默认application为文件名的根。

    spring.config.location( SPRING_CONFIG_LOCATION):要加载的文件(例如类路径资源或 URL)。Environment为该文档设置了一个单独的属性源,它可以被系统属性、环境变量或命令行覆盖。

    无论您在环境中设置什么,Spring Boot 始终application.properties按上述方式加载。默认情况下,如果使用 YAML,则扩展名为“.yml”的文件也会添加到列表中。

    Spring Boot 会记录在该DEBUG级别加载的配置文件以及它在该级别未找到的候选文件TRACE。

Spring boot

如有不懂:请参阅Spring中国教育管理中心了解更多详情。

Spring Boot 的配置文件有哪几种格式?它们有什么区别?

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

以上是关于SpringBoot的配置文件有哪几种格式?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 的配置文件有哪几种格式?它们有什么区别?

java面试之SpringBoot篇

java面试之SpringBoot篇

2021年百度Java面试真题,一文轻松搞定

java开发环境的搭建的理解,意外的惊喜

Java开发谈:java热血征途触屏版