从@ConfigurationProperties学习Spring的依赖注入机制和反射机制

首先有如下代码

@ConfigurationProperties(prefix = "aliyun.oss")
public class FileUtils {

    private static final String DIRECTORY = "D:/software/";

    private static String endpoint ;

    private static String accessKeyId;

    private static String accessKeySecret ;

    private static String bucketName ;
}

该代码引用了.properties中的key

aliyun.oss.endpoint = *****
aliyun.oss.accessKeyId = *****
aliyun.oss.accessKeySecret = *****
aliyun.oss.bucketName = *****

运行时报认证异常,如下:

com.aliyun.oss.common.auth.InvalidCredentialsException: Access key id should not be null or empty.
 

原因是由于@ConfigurationProperties不支持静态字段,解决问题将成员变量中的static去掉即可;

同时@ConfigurationProperties是通过getter/setter给成员变量赋值,不要忘记

但其中涉及到了Spring的依赖注入机制和反射机制,以下是我的总结性的理解:

在Spring的设计中,不鼓励将配置属性绑定到静态字段上(静态字段通常用于表示常量或者全局共享的状态)。Spring的依赖注入机制中,容器会创建一个类的实例,Spring可以通过反射来获得该实例,并对类的实例进行管理。而静态变量在类加载阶段就存在,属于类而不属于实例,不受容器管理,所以无法通过依赖注入给静态变量注入值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值