SpringBoot外部化配置示例解析

yizhihongxing

下面我将为你详细讲解“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日

相关文章

  • SpringMVC Restful风格与中文乱码问题解决方案介绍

    SpringMVC Restful风格与中文乱码问题解决方案介绍 在 Spring MVC 中,我们可以使用 Restful 风格来设计 Web 应用程序。Restful 风格是一种基于 HTTP 协议的 Web 应用程序设计风格,它可以帮助我们更好地设计和实现 Web 应用程序。但是,在使用 Restful 风格时,我们可能会遇到中文乱码问题。本文将详细讲…

    Java 2023年5月18日
    00
  • JAVA异常体系结构详解

    JAVA异常体系结构详解 异常概述 在Java基础编程语言中,异常(Exception)是指在一个程序的运行过程中发生的错误或者问题。异常表示程序在运行时遇到了某个非正常的情况,这个特殊情况将终止当前正在执行的代码块并且会向调用者传递一个错误信息,在异常处理的过程中是使用异常对象来表示的。相关类都保存在 java.lang.Exception 包中。 Jav…

    Java 2023年5月27日
    00
  • maven 隐式依赖引起的包冲突解决办法

    当使用Maven构建项目时,一个常见的问题是来自传递依赖的冲突。这个问题的根源在于Maven隐式依赖的传递机制。本文将介绍如何通过Maven来解决这个问题,主要包括以下几个方面: 了解Maven的依赖传递机制 利用Maven Dependency Plugin分析依赖冲突 使用依赖排除,去除冲突依赖 了解 Maven 的依赖传递机制 Maven的依赖传递机制…

    Java 2023年5月20日
    00
  • 微信小程序实现上传图片功能

    为了能更好地讲解实现上传图片功能的攻略,我会先介绍一下常用的两种上传方式,再分别对其进行示例说明,最后提供具体的代码实现。 常见的图片上传方式 表单上传 表单上传是指通过表单提交的方式将图片上传至服务器,传统的网页上传图片一般采用表单上传的方式。文件上传需要使用input元素, 其中type属性设为file。在提交表单时,浏览器会把文件的二进制数据打包成 M…

    Java 2023年5月23日
    00
  • cemtos 7 linux 安装与卸载 tomcat 7的教程

    CentOS 7 Linux安装Tomcat 7教程 步骤一:安装Java 在CentOS 7中,我们可以使用yum来安装Java。在命令行终端中运行以下命令来安装: sudo yum install java-1.8.0-openjdk-devel 该命令将在系统中安装OpenJDK 1.8。 步骤二:下载Tomcat 7 您可以从Tomcat官方网站 h…

    Java 2023年5月19日
    00
  • Security框架:如何使用CorsFilter解决前端跨域请求问题

    当前端发送请求到后端时,如果请求的域名与后端的域名不一致,就会出现跨域行为。为了确保网站的安全性,浏览器默认不允许跨域请求。这就需要开发者采用跨域方案让浏览器通过。 在Spring Security框架中,使用CorsFilter组件来解决前端跨域请求问题。其中,CorsFilter是 Spring Security 框架自带的跨域请求解决方案,它在返回的响…

    Java 2023年5月20日
    00
  • java list 比较详解及实例

    Java List 比较详解及实例 什么是 Java 中的 List? 在 Java 中,List 是一个接口,用于表示一组有序的元素集合。它是 Collection 接口的子接口,因此,它继承了父接口的许多方法,如 add()、remove()、contains() 等等。与其他集合不同的是,List 中的元素是有顺序的,因此,可以通过元素在列表中的位置来…

    Java 2023年5月26日
    00
  • Java安全之Tomcat6 Filter内存马问题

    Java安全之Tomcat6 Filter内存马问题完整攻略 背景 Tomcat是一个开放源代码的Web应用服务器,支持多种Web开发技术,包括Java Servlet、JavaServer Pages(JSP)和JavaServer Faces(JSF)等。然而,在使用Tomcat时,可能会存在一些安全问题,比如内存马问题。本篇攻略旨在详细介绍Tomcat…

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