@ConfigurationProperties(prefix = "sky.jwt")
是 Spring Boot 框架里的一个注解,其主要功能是把配置文件(像 application.properties
或者 application.yml
)里的属性值绑定到一个 Java 类的字段上。下面详细阐述其作用:
表示当前的类为配置属性类,封装配置文件里面的一些配置项
1. 绑定配置属性
在 Spring Boot 应用里,配置文件(如 application.properties
或 application.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 类字段的类型进行属性值的转换。例如,adminTtl
和 userTtl
是 long
类型,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
类的对应字段上,实现配置属性的集中管理和类型安全的绑定。