SpringBoot外部化配置示例解析

下面我将为你详细讲解“SpringBoot外部化配置示例解析”的完整攻略。

简介

在开发过程中,我们通常会使用外部配置文件,比如properties或者yaml格式的配置文件。其中,Spring Boot利用spring-boot-configuration-processor自动获取并识别配置文件中的属性,使得在Java代码中可以直接使用@Autowired和@Value注解来使用这些属性。

配置优先级

Spring Boot的配置文件有多种来源,包括application.properties、application.yaml、命令行、应用程序程序包或者其他配置源。

Spring Boot使用一个非常特殊的“PropertySource”顺序来决定优先级,如下所示:

  1. 命令行参数。

  2. SPRING_APPLICATION_JSON(内联JSON属性)。

  3. JNDI属性。

  4. Java的系统属性(System.getProperties())。

  5. 操作系统的环境变量。

  6. RandomValuePropertySource,仅存在如下两个属性。

  7. application.properties或者application.yml(包含在你的jar包内的“内部”应用程序属性)。

  8. 外部属性文件(application-{profile}.properties或application-{profile}.yml)。

PS:{profile}是指你使用spring.profiles.active配置的激活的环境名称,如果没有设置,那么就默认是default。

这个顺序被设计的足够灵活,同时也足够强大。你可以使用默认值,或者通过各种你愿意的属性源进行覆盖。

实际应用

接下来为你介绍两个实例来看看如何使用外部化配置。

实例1:使用application.properties

在使用application.properties之前,我们需要引入相应的依赖,添加如下代码到pom.xml文件中:

<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <!-- ... -->
</dependencies>

添加完成后,我们可以在项目中添加application.properties文件,并添加如下配置项:

#邮件发送设置
spring.mail.host=smtp.163.com
spring.mail.username=xxx@163.com
spring.mail.password=xxx
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true

然后我们可以在代码中使用如下方式获取这些配置项:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MailSendService {

    @Value("${spring.mail.username}")
    private String mailUsername;

    @Value("${spring.mail.properties.mail.smtp.auth}")
    private boolean mailSmtpAuth;

    // ...
}

实例2:使用application.yml

添加application.yml前我们需要引入如下依赖:

<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
    </dependency>
    <!-- ... -->
</dependencies>

添加完成后,我们可以在项目中添加application.yml文件,并添加如下配置项:

server:
  port: 8080
  servlet:
    context-path: '/'

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456

使用以下方法来获取配置项:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConfigFileDemo {

    @Value("${server.port}")
    private int port;

    @Value("${spring.datasource.url}")
    private String dataSourceUrl;

    // ...
}

总结

通过上述实例,我们可以看得出,Spring Boot的外部化配置是非常简单易用的。通过application.properties和application.yml两种格式文件的选用,我们可以通过@Value注解或者@ConfigurationProperties注解获取配置属性,从而实现实际应用开发中的灵活配置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot外部化配置示例解析 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Mybatis 中如何判断集合的size

    判断 Mybatis 中查询出来的结果集的 size 主要有以下几种方式: 判断查询结果是否为空 可以使用 Mybatis 自带的 isEmpty() 方法判断查询结果是否为空,与此相对地,还可以使用isNotEmpty() 方法判断结果是否不为空。例如: List<User> userList = userMapper.selectUserLi…

    Java 2023年5月20日
    00
  • Java数组归纳总结

    Java数组归纳总结 在Java语言中,数组是一种非常常用的数据结构,可以用来存储同一类型的数据。本文将对Java数组进行归纳总结,包括数组的定义、初始化、遍历、复制、排序等常用操作,以及一些常见问题和解决方案。 数组的定义 Java数组是一种固定长度的数据结构,可以存储同一类型的数据。数组定义时需要指定数组的长度和类型。 声明一个长度为10,类型为int的…

    Java 2023年5月26日
    00
  • 基于Java实现考试管理系统

    基于Java实现考试管理系统攻略 准备工作 首先,需要安装Java开发工具和MySQL数据库。常见的Java开发工具有Eclipse、IntelliJ IDEA等,可以根据个人喜好选择使用。同时还需要学习Java基础语法和SQL语句。 设计数据库表结构 考试管理系统需要存储的信息包括考生信息、考试科目信息、试卷信息、试题信息、考试成绩信息等。需要根据需求设计…

    Java 2023年5月19日
    00
  • Java编程实现数组转成list及list转数组的方法

    Java编程实现数组转成list及list转数组的方法 在Java编程中,我们经常需要将数组和List之间进行转换。下面是将数组转换成List和将List转换成数组的方法: 将数组转换成List 使用Arrays.asList(Object[] array) 可以使用Arrays.asList()方法将数组转换成List。代码示例如下: // 定义一个数组 …

    Java 2023年5月26日
    00
  • Java实战小技巧之数组与list互转

    可以按照以下步骤将Java数组和List进行互相转换: 将数组转换为List 使用Arrays类的asList方法将数组转换为List java String[] array = {“a”, “b”, “c”}; List<String> list = Arrays.asList(array); 这里将String类型的数组转换为List类型的列…

    Java 2023年5月26日
    00
  • JDBC连接数据库的方法汇总

    下面是详细讲解“JDBC连接数据库的方法汇总”的完整攻略。 JDBC连接数据库的方法汇总 Java Database Connectivity(JDBC)是一种对数据库的标准API,JDBC使得Java程序可以访问并处理数据库中存储的数据。JDBC提供了一种与数据库通信的标准方法,并为开发人员提供了一些处理和操作数据库的基本工具。在Java中,可以通过许多不…

    Java 2023年5月20日
    00
  • SpringBoot2.0整合jackson配置日期格式化和反序列化的实现

    一、引言 在开发web应用中,我们经常会涉及到日期类型的数据,在服务器的日期格式与前端的日期格式不同的情况下,我们必须对日期进行格式化处理。本篇文章将介绍如何在SpringBoot2.0项目中整合jackson实现日期格式化和反序列化的功能。 二、依赖 在pom.xml中添加如下依赖: <dependencies> <dependency&…

    Java 2023年5月20日
    00
  • Spring-Data-JPA整合MySQL和配置的方法

    下面是Spring-Data-JPA整合MySQL和配置的详细攻略: 1. 添加依赖 首先,在项目的Maven或Gradle配置文件中,添加以下依赖来引入Spring-Data-JPA和MySQL的相关依赖。 Maven: <dependency> <groupId>org.springframework.boot</group…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部