属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践

简介: 属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践


属性注入

当使用 Spring Boot 开发应用程序时,可以使用属性文件来配置应用程序的行为。Spring Boot 支持将属性值从属性文件注入到应用程序中的不同组件中。这使得我们可以在不修改代码的情况下更改应用程序的行为。

Spring Boot 支持多种类型的属性文件,包括 .properties.yml 文件。以下是使用这些文件进行属性注入的示例:

  1. 创建属性文件:首先,创建一个名为 application.properties(或 application.yml)的文件,放在 src/main/resources 目录下。该文件包含要配置的属性键值对。
  2. 定义属性:在属性文件中,可以定义应用程序需要的各种属性。例如,可以定义数据库连接的URL、用户名、密码等。
author:
  name: 薛伟
  age: 25
  isMan: true
  # 日期格式必须为 yyyy/MM/dd HH:mm:ss
  birthday: 1999/07/29 12:00:00
  # 数组或集合使用 , 分割
  friends: 张三,李四,王五,赵六
  # 此处为 JSON 字符串,双引号包裹
  school: "{'name':'宜春学院', 'location':'江西-宜春', 'major':'计算机科学与技术'}"

注入属性值:在 Spring Boot 应用程序的代码中,可以通过使用 @Value 注解将属性值注入到变量中。

@SpringBootTest
public class InjectionTest {
    /**
     * 注入基本数据类型
     */
    @Value("${author.name}")
    private String name;
    
    @Value("${author.age}")
    private Integer age;
    
    @Value("${author.isMan}")
    private Boolean isMan;
    /**
     * 注入日期
     */
    @Value("${author.birthday}")
    private Date birthday;
    /**
     * 注入数组或集合
     */
    @Value("${author.friends}")
    private List<String> friends;
    /**
     * 注入 JSON 转为 Map
     */
    @Value("#{${author.school}}")
    private Map<String,Object> school;
    
}

对象注入

使用 @ConfigurationProperties(prefix = "前缀"),比如上文在 application.yml 中配置的信息,那么 author 就是前缀。注意使用对象注册的时候就不可以在注入 JSON 了。

@Data
@Component
@ConfigurationProperties(prefix = "author")
public class Author {
    private String name;
    private Integer age;
    private Date birthday;
    private Boolean isMan;
    private List<String> friends;
}

自定义配置文件并使用对象注入

在 Spring Boot 应用程序中,可以使用自定义配置文件来覆盖默认的 application.properties 或 application.yml 文件。这意味着您可以在不修改默认配置文件的情况下,为您的应用程序提供自己的自定义配置。

resources 目录下创建 custom.properties 配置文件,并填写以下配置:

project.name=测试DEMO
project.jdk=1.8

加载自定义配置文件:在 Spring Boot 应用程序中,可以通过使用 PropertySource 注解加载自定义配置文件。

@Data
@Component
@PropertySource("classpath:/custom.properties")
public class MyProject {
    
    @Value("${project.name}")
    private String name;
    @Value("${project.jdk}")
    private String jdk;
}

然后配合 @ConfigurationProperties(prefix = "前缀") 即可完成对象注入。

@Data
@Component
@ConfigurationProperties(prefix = "project")
@PropertySource("classpath:/custom.properties")
public class Project {
    private String name;
    private String jdk;
}



相关文章
|
4天前
|
Java uml Spring
手写spring第四章-完善bean实例化,自动填充成员属性
手写spring第四章-完善bean实例化,自动填充成员属性
12 0
|
5天前
|
存储 Java 数据安全/隐私保护
|
2天前
|
Java 开发者 Spring
Spring Boot中的资源文件属性配置
【4月更文挑战第28天】在Spring Boot应用程序中,配置文件是管理应用程序行为的重要组成部分。资源文件属性配置允许开发者在不重新编译代码的情况下,对应用程序进行灵活地配置和调整。本篇博客将介绍Spring Boot中资源文件属性配置的基本概念,并通过实际示例展示如何利用这一功能。
10 1
|
6天前
|
Java Spring 容器
Spring注入
Spring注入
24 13
|
11天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
18 0
|
11天前
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
35 0
|
12天前
|
XML Java 数据库
在Spring框架中,XML配置事务
在Spring框架中,XML配置事务
|
12天前
|
Java Windows Spring
Spring Boot 3.x 全新的热部署配置方式(IntelliJ IDEA 2023.1)
Spring Boot 3.x 全新的热部署配置方式(IntelliJ IDEA 2023.1)
15 1
|
2月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
785 0
|
11月前
|
XML Java 数据库连接
【Spring学习笔记 五】Spring注解及Java类配置开发
【Spring学习笔记 五】Spring注解及Java类配置开发
70 0