属性注入掌握: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;
}



相关文章
|
2月前
|
安全 Java API
深入解析 Spring Security 配置中的 CSRF 启用与 requestMatchers 报错问题
本文深入解析了Spring Security配置中CSRF启用与`requestMatchers`报错的常见问题。针对CSRF,指出默认已启用,无需调用`enable()`,只需移除`disable()`即可恢复。对于`requestMatchers`多路径匹配报错,分析了Spring Security 6.x中方法签名的变化,并提供了三种解决方案:分次调用、自定义匹配器及降级使用`antMatchers()`。最后提醒开发者关注版本兼容性,确保升级平稳过渡。
233 2
|
3月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
125 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
3月前
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——Spring Boot 事务配置
本文介绍了 Spring Boot 中的事务配置与使用方法。首先需要导入 MySQL 依赖,Spring Boot 会自动注入 `DataSourceTransactionManager`,无需额外配置即可通过 `@Transactional` 注解实现事务管理。接着通过创建一个用户插入功能的示例,展示了如何在 Service 层手动抛出异常以测试事务回滚机制。测试结果表明,数据库中未新增记录,证明事务已成功回滚。此过程简单高效,适合日常开发需求。
169 0
|
2月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
225 5
|
3月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
183 0
|
3月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th=&quot;http://www.thymeleaf.org&quot;`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
90 0
|
3月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
98 0
|
Java Spring 容器
Spring 源码解析 | populateBean 属性填充(上)
本文主要是讲 Spring 容器的启动过程主要是以题干的方式进行可能不回涉及过多的细节,希望大家阅读本文能对 Spring 源码有一个简单的了解。 环境介绍: Spring 5.3.10 Jdk 11
263 0
Spring 源码解析 | populateBean 属性填充(上)
|
Java Spring 容器
Spring 源码解析 | populateBean 属性填充(下)
本文主要是讲 Spring 容器的启动过程主要是以题干的方式进行可能不回涉及过多的细节,希望大家阅读本文能对 Spring 源码有一个简单的了解。 环境介绍: Spring 5.3.10 Jdk 11
205 0
|
Java 数据库连接 Spring
Spring 属性填充(下)
Spring 的属性填充主要是在 Bean 被创建后,通过 populateBean 方法来完成对象属性赋值以逐步完成 Bean 的初始化工作。
240 0