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 类的对应字段上,实现配置属性的集中管理和类型安全的绑定。

相关推荐
一枚小小程序员哈1 小时前
基于asp.net 的在线餐饮订餐系统的设计与实现/基于c#的网上订餐系统/餐厅管理系统
后端·c#·asp.net
cyforkk2 小时前
ArrayList vs LinkedList:底层原理与实战选择指南
java
孟婆来包棒棒糖~3 小时前
泛型与反射
java·反射·javase·泛型
A尘埃4 小时前
Spring Event 企业级应用
java·spring·event
YuTaoShao6 小时前
【LeetCode 热题 100】139. 单词拆分——(解法一)记忆化搜索
java·算法·leetcode·职场和发展
Best_Liu~6 小时前
策略模式 vs 适配器模式
java·spring boot·适配器模式·策略模式
你的人类朋友6 小时前
【Node&Vue】什么是ECMAScript?
前端·javascript·后端
direction__6 小时前
Java Main无法初始化主类的原因与解决方法(VsCode工具)
java·vscode
帧栈7 小时前
开发避坑指南(29):微信昵称特殊字符存储异常修复方案
java·mysql
每天的每一天7 小时前
面试可能问到的问题思考-Redis
java