SpringBoot配置类注入Bean无效,@Autowired爆红无法导入 排错

  • Post author:
  • Post category:其他




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 版权协议,转载请附上原文出处链接和本声明。