重学SpringBoot3-@EnableConfigurationProperties注解

2024-03-04 10:44

本文主要是介绍重学SpringBoot3-@EnableConfigurationProperties注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

重学SpringBoot3-@EnableConfigurationProperties注解

  • 1. 引言
  • 2. @EnableConfigurationProperties 的作用
  • 3. 使用示例
  • 4. 总结

1. 引言

Spring Boot 提供了一种便捷的方式来管理和校验应用程序的配置,即通过类型安全的配置属性。@EnableConfigurationProperties 注解在这里扮演了重要的角色,它使得 Spring Boot 能够将外部配置文件中的属性绑定到强类型的 Java Beans 上。

2. @EnableConfigurationProperties 的作用

@EnableConfigurationProperties 注解的主要作用是启用对 @ConfigurationProperties 注解类的支持。这包括:

  • 将配置文件(如 application.properties 或 application.yml)中的属性绑定到带有 @ConfigurationProperties 注解的类上。
  • 在需要时自动注册这些类为 Spring 上下文中的 Beans。
  • 提供详尽的属性绑定结果(包括异常报告)。

通过使用 @EnableConfigurationProperties,开发者可以轻松实现外部配置的注入和管理,提高代码的模块化和可维护性。

3. 使用示例

下面通过一个示例来说明如何在 Spring Boot 3 应用中使用 @EnableConfigurationProperties

假设你有一个配置属性类 AppProperties(可以是第三方包中的配置属性类,无法用@Component扫描):

@ConfigurationProperties(prefix = "app")
public class AppProperties {private String name;private String description;// standard getters and setters
}

在这个类中,prefix = "app" 指定了属性名称的前缀。因此,namedescription 字段将分别绑定到 app.nameapp.description 配置属性上。

要启用这个配置属性类,你可以在任何配置类上使用 @EnableConfigurationProperties 注解:

@SpringBootApplication
@EnableConfigurationProperties(AppProperties.class)
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

在这个例子中,@EnableConfigurationProperties(AppProperties.class) 注解使得 Spring Boot 自动将 application.properties 中的相关属性绑定到 AppProperties 类的实例上,并将该实例注册为 Spring 上下文的一个 Bean。

现在,你可以在应用中的任何位置注入 AppProperties

@Service
public class MyService {private final AppProperties appProperties;@Autowiredpublic MyService(AppProperties appProperties) {this.appProperties = appProperties;}public void someMethod() {System.out.println("App name: " + appProperties.getName());// 使用 appProperties 的其他方法}
}

在这个服务类中,AppProperties 通过构造器注入,使得你可以在需要时使用配置属性。

4. 总结

通过使用 @EnableConfigurationProperties 注解,Spring Boot 应用可以非常方便地将外部配置映射到强类型的 Java Beans 上,从而使配置更加易于管理和维护。这种方法不仅提高了代码的清晰度和安全性,还降低了错误配置的风险。在 Spring Boot 3 中,这一机制仍然是管理和使用配置属性的推荐方式。

这篇关于重学SpringBoot3-@EnableConfigurationProperties注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/772932

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

SpringBoot3中使用虚拟线程的完整步骤

《SpringBoot3中使用虚拟线程的完整步骤》在SpringBoot3中使用Java21+的虚拟线程(VirtualThreads)可以显著提升I/O密集型应用的并发能力,这篇文章为大家介绍了详细... 目录1. 环境准备2. 配置虚拟线程方式一:全局启用虚拟线程(Tomcat/Jetty)方式二:异步