下面我将为你详细讲解“SpringBoot外部化配置示例解析”的完整攻略。
简介
在开发过程中,我们通常会使用外部配置文件,比如properties或者yaml格式的配置文件。其中,Spring Boot利用spring-boot-configuration-processor自动获取并识别配置文件中的属性,使得在Java代码中可以直接使用@Autowired和@Value注解来使用这些属性。
配置优先级
Spring Boot的配置文件有多种来源,包括application.properties、application.yaml、命令行、应用程序程序包或者其他配置源。
Spring Boot使用一个非常特殊的“PropertySource”顺序来决定优先级,如下所示:
-
命令行参数。
-
SPRING_APPLICATION_JSON(内联JSON属性)。
-
JNDI属性。
-
Java的系统属性(System.getProperties())。
-
操作系统的环境变量。
-
RandomValuePropertySource,仅存在如下两个属性。
-
application.properties或者application.yml(包含在你的jar包内的“内部”应用程序属性)。
-
外部属性文件(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技术站