Spring Boot 框架注解:@ConfigurationProperties

@ConfigurationProperties(prefix = "sky.jwt") 是 Spring Boot 框架里的一个注解,其主要功能是把配置文件(像 application.properties 或者 application.yml)里的属性值绑定到一个 Java 类的字段上。下面详细阐述其作用:

表示当前的类为配置属性类,封装配置文件里面的一些配置项

1. 绑定配置属性

在 Spring Boot 应用里,配置文件(如 application.propertiesapplication.yml)用于存储应用的各种配置信息。借助 @ConfigurationProperties 注解,能够把配置文件中以特定前缀开头的属性值自动绑定到 Java 类的对应字段上。

在你给出的代码中,@ConfigurationProperties(prefix = "sky.jwt") 表示会把配置文件里以 sky.jwt 开头的属性值绑定到 JwtProperties 类的字段上。例如,若配置文件如下:

application.properties
properties 复制代码
sky.jwt.adminSecretKey=admin_secret_key_123
sky.jwt.adminTtl=3600
sky.jwt.adminTokenName=admin_token
sky.jwt.userSecretKey=user_secret_key_456
sky.jwt.userTtl=7200
sky.jwt.userTokenName=user_token
application.yml
yaml 复制代码
sky:
  jwt:
    adminSecretKey: admin_secret_key_123
    adminTtl: 3600
    adminTokenName: admin_token
    userSecretKey: user_secret_key_456
    userTtl: 7200
    userTokenName: user_token

Spring Boot 会自动把这些属性值绑定到 JwtProperties 类的对应字段上:

java 复制代码
@Component
@ConfigurationProperties(prefix = "sky.jwt")
@Data
public class JwtProperties {
    private String adminSecretKey;
    private long adminTtl;
    private String adminTokenName;
    private String userSecretKey;
    private long userTtl;
    private String userTokenName;
}

2. 类型安全

使用 @ConfigurationProperties 注解可以保证类型安全。Spring Boot 会自动依据 Java 类字段的类型进行属性值的转换。例如,adminTtluserTtllong 类型,Spring Boot 会把配置文件中的字符串值自动转换为 long 类型。

3. 集中管理配置

借助把配置属性绑定到一个 Java 类,能够对配置信息进行集中管理,增强代码的可读性和可维护性。在需要使用这些配置属性时,只需注入 JwtProperties 类的实例即可。

4. 示例代码使用

在其他组件中可以通过依赖注入的方式使用 JwtProperties 类的实例:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class JwtService {

    private final JwtProperties jwtProperties;

    @Autowired
    public JwtService(JwtProperties jwtProperties) {
        this.jwtProperties = jwtProperties;
    }

    public void printJwtProperties() {
        System.out.println("Admin Secret Key: " + jwtProperties.getAdminSecretKey());
        System.out.println("Admin TTL: " + jwtProperties.getAdminTtl());
        System.out.println("Admin Token Name: " + jwtProperties.getAdminTokenName());
        System.out.println("User Secret Key: " + jwtProperties.getUserSecretKey());
        System.out.println("User TTL: " + jwtProperties.getUserTtl());
        System.out.println("User Token Name: " + jwtProperties.getUserTokenName());
    }
}

在这个示例中,JwtService 类通过构造函数注入了 JwtProperties 类的实例,进而可以使用配置文件中的属性值。

综上所述,@ConfigurationProperties(prefix = "sky.jwt") 的作用是把配置文件中以 sky.jwt 开头的属性值绑定到 JwtProperties 类的对应字段上,实现配置属性的集中管理和类型安全的绑定。

相关推荐
mldong3 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾13 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
zhanghe6874 小时前
es的密码带有特殊字符,导出
java
pnoker4 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy4 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
天远数科5 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
步行cgn5 小时前
YAML 的语法规则
spring boot·后端
骇客野人5 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
摇滚侠5 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng15 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库