1、环境
- Spring Boot 2.5.8
- JDK 11
2、错误复现
场景:我们需要在配置类中配置一个CosServer Bean,并注入到Controller中实现文件上传到COS
🔖配置类:
import com.chatroom.utils.CosServer;
import lombok.Data;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@Data
@Configurable
public class CosConfiguration {
@Value("${cos.bucketName}")
private String bucketName;
@Value("${cos.secretId}")
private String secretId;
@Value("${cos.secretKey}")
private String secretKey;
@Bean
public CosServer createCosServer() {
return new CosServer(bucketName, secretId, secretKey);
}
}
🔖Controller
在Controller层中注入CosServer的时候发现报错,且启动不了
3、解决办法
观察配置类我们使用的
Configurable
注解导包为 :
org.springframework.beans.factory.annotation.Configurable;
可能不正确
❗将
Configurable
注解的导包改为
org.springframework.context.annotation.Configuration;
即可
4、原因
因为CosServer对象需要在容器
启动的时候
就需要初始化好,并注入到容器中,供其他地方使用,所以只能使用
org.springframework.context.annotation
下的
Configurable
注解,不能使用bean工厂里面的注解
版权声明:本文为GhostGuest原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。