springboot如何引入外部yml配置文件

下面是关于“springboot如何引入外部yml配置文件”的完整攻略。

1.准备工作

在开始之前,确保您已经安装了jdk、maven以及您喜欢的文本编辑器或IDE工具。

2. 创建新的Spring Boot项目

首先在命令行中输入下面的命令,创建一个新的Spring Boot项目。

$ mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

在这里,我们选择了使用“maven-archetype-quickstart”原型来创建项目。

3. 引入外部yml配置文件

接下来,我们需要在项目中引入外部yml配置文件。

3.1 配置文件命名规则

通常情况下,我们将配置文件以“application.yml”或“application.properties”的名称存放在“src/main/resources”目录下。但是,为了引入外部yml配置文件,我们需要遵循一定的命名规则:

1.首先,我们需要确保存放配置文件的文件夹在classpath下。如果您的配置文件位于C:\config\application.yml,那么您需要在启动命令中添加-cp参数,以将该文件夹添加至classpath:

$ java -cp C:\config\ -jar demo.jar

或者在需要创建外部配置文件的项目中,将C:\config\application.yml 直接放到工程目录下。

2.其次,我们需要按照命名规则命名配置文件。如果您的应用程序的名称是“myapp”,那么您需要将配置文件命名为“myapp.yml”或“myapp.yaml”。

在本例中,为了演示引入外部yml配置文件,我们将创建一个名为“student”的Spring Boot应用程序,并将配置文件命名为“student.yml”。

3.2 添加配置文件依赖

接下来,我们需要添加一个配置文件依赖项,以便我们可以在代码中引用它。

在pom.xml文件中添加以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-yaml</artifactId>
</dependency>

3.3 创建配置类

我们需要一些SpringBoot配置来扫描外部的yml配置文件并将其加载到运行时环境中。

创建一个新的类YamlPropertySourceFactory

package com.example.demo.config;

import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;

import java.io.IOException;

/**
 * yml自定义加载器
 */
public class YamlPropertySourceFactory implements PropertySourceFactory {
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        Resource resource1 = resource.getResource();
        YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
        PropertySource<?> propertySource = loader.
                load(resource1.getFilename(), resource.getResource()).get(0);
        return propertySource;
    }
}

3.4 配置文件信息存储类

接下来,我们需要创建一个用于存储配置文件信息的类。

package com.example.demo.model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "student")
public class StudentConfigModel {
    private String name;
    private Integer age;

    //省略getter setter
}

在这里,我们使用了@Component注解将该类声明为Spring Bean,并使用@ConfigurationProperties注解来指示将配置文件中以“student”前缀开始的属性值自动注入该类中。

具体的,如下的yml配置文件内容,name和age的属性值将自动注入到该类对应的属性中。

student:
  name: Tom
  age: 21

3.5 配置和使用

最后,我们需要在Spring Boot应用程序中配置这个类并使用它。

application.ymlstudent.yml中添加以下配置:

spring:
  profiles:
    active: dev

接着在application-dev.yml或者别的自己创建的文件中添加:

student:
  name: Tim
  age: 19

我们需要在Spring Boot应用程序的配置文件中添加以下代码:

spring:
  profiles:
    active: dev

management:
  endpoints:
    web:
      exposure:
        include: '*'

spring.config.import:
  - optional:classpath:/config/
  - optional:classpath:/

student:
  name: 李四
  age: 18

在这里,我们配置了激活“dev”配置文件,以及引入/config文件夹下的配置文件。

在我们需要使用配置的类中,我们可以使用@Value注解或者@Autowired将其注入到其他bean中。

package com.example.demo.services;

import com.example.demo.config.YamlPropertySourceFactory;
import com.example.demo.model.StudentConfigModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class StudentService {
    @Autowired
    private Environment env;

    @Autowired
    private StudentConfigModel studentConfigModel;

    @Value("${student.name}")
    private String name;

    public void printConfig() {
        System.out.println("通过@Value注入的name:" + name);
        System.out.println("StudentConfigModel的name:" + studentConfigModel.getName());
        System.out.println("Environment的name:" + env.getProperty("student.name"));
    }
}

通过以上配置,我们就可以使用注入的方式,来得到自定义yml文件中的值。

这里我们提供了两个示例:

  1. 使用@Value注入配置值:使用该注解,注入值比较直接,但是只能针对非复杂类型的属性进行注入,如果属性过多,也比较繁琐。

  2. 使用自定义的StudentConfigModel类,使用该类,对自定义的配置文件属性值进行绑定注入,相比1而言,比较明了,但是需要新创建一个类绑定属性。

  3. 使用Environment来获取另外一种注入方式,可以灵活得到多个配置文件的信息,同时也能针对非复杂类型/复杂类型的属性进行注入的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何引入外部yml配置文件 - Python技术站

(1)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Javascript 自定义类型方法小结

    当我们在使用 JavaScript 进行开发时,如果想要封装一些属性和方法,通常会使用自定义类型。自定义类型可以理解为 JavaScript 中的类,通过 new 关键字创建实例对象,可以访问该类型中定义的属性和方法。 创建自定义类型的两种方式 1. 构造函数 创建自定义类型最常用的方式是通过构造函数(Constructor)实现。构造函数可以通过 new …

    other 2023年6月27日
    00
  • 哔哩哔哩如何清理缓存?哔哩哔哩清理存储空间方法

    哔哩哔哩如何清理缓存? 哔哩哔哩是一个非常受欢迎的在线视频平台,它在使用过程中可能会占用大量的存储空间。为了释放存储空间并提高设备的性能,清理哔哩哔哩的缓存是一个不错的选择。下面是清理缓存的详细攻略: 步骤一:打开哔哩哔哩应用 首先,找到并打开你的哔哩哔哩应用。你可以在手机的应用列表中找到它,通常是一个带有蓝色背景和“哔哩哔哩”字样的图标。 步骤二:进入设置…

    other 2023年8月1日
    00
  • [转] ElasticSearch 常用的查询过滤语句

    [转] ElasticSearch 常用的查询过滤语句 欢迎大家来到本篇文章。本文将介绍 ElasticSearch 常用的查询过滤语句,希望能够帮助大家更好地了解 ElasticSearch 的使用方法。 Query String Query Query String Query 是 ElasticSearch 中最常见的查询语句之一,它可以根据指定的搜索…

    其他 2023年3月28日
    00
  • win10应用程序无法启动因为并行配置不正确解决办法图文教程

    解决 Win10 应用程序无法启动因为并行配置不正确问题 当我们在 Win10 上安装一些应用程序时,有时会遇到以下错误提示: [应用程序名] 无法启动,因为并行配置不正确,与此问题相关联的组件可能已损坏或缺失。 那么该如何解决这个问题呢?下面将为大家提供详细的解决方案。 解决方案 方案一:卸载并重新安装程序 首先,尝试卸载掉出问题的程序,并重新下载安装。有…

    other 2023年6月25日
    00
  • 华为mate20 pro怎么卸载应用?华为mate20 pro删除应用程序教程

    以下是华为mate20 pro卸载应用的完整攻略,包含详细的步骤: 1. 打开应用管理器 在华为mate20 pro中,卸载应用的方法是通过应用管理器来进行的。因此,首先需要打开应用管理器。 你可以通过以下两种方法来打开应用管理器: 在主屏幕上,长按任何一个应用程序,等待出现应用选项,然后选择“应用管理器”。 或者,在主屏幕上,打开应用抽屉,找到并打开“设置…

    other 2023年6月25日
    00
  • Android 有道词典的简单实现方法介绍

    Android 有道词典的简单实现方法介绍 有道词典是一款非常受欢迎的在线翻译工具,下面将详细介绍如何在Android应用中实现一个简单的有道词典。 步骤一:准备工作 首先,你需要在有道智云平台上注册一个开发者账号,并创建一个应用,获取到应用的App Key和App Secret。这些信息将用于访问有道词典的API。 步骤二:添加依赖库 在你的Android…

    other 2023年8月21日
    00
  • .img/.hdr格式转.nii格式的操作

    将.img/.hdr格式转换为.nii格式,需要使用到FSL或AFNI两种工具之一。下面我将分别介绍这两种工具的操作步骤。 使用FSL转换格式 1. 准备工作 首先,确保你已经安装了FSL,并将它的环境变量设置正确。同时,请确保你的.img/.hdr文件在同一个文件夹下,文件名相同。 2. 执行转换命令 在命令行中输入以下命令: fslchfiletype …

    other 2023年6月26日
    00
  • 在Mac OS上安装Java以及配置环境变量的基本方法

    在Mac OS上安装Java以及配置环境变量的基本方法如下: 步骤一:下载并安装Java Development Kit(JDK) 访问Oracle官网下载JDK安装包,下载地址为:https://www.oracle.com/java/technologies/javase-jdk15-downloads.html(根据需要下载对应版本即可) 安装JDK,…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部