springboot中普通类使用@Autowired注入实例,实例却为null

当在Spring容器中的普通类尝试使用@Autowired等注解进行自动注入失败时,问题在于此类未被正确注册到Spring容器。解决方法包括:1) 使用@Component注解将类注册到容器;2) 使用静态方法和静态变量;3) 如果不想注入容器,可通过工具类获取Spring Bean。确保类及其依赖被正确管理是避免自动注入失败的关键。
摘要由CSDN通过智能技术生成

在一次普通类中使用@Autowired、@Resource或者@Autowired+@Qualifier对变量进行自动注入,在spring容器中,该实例对象已经注册后成功,但是自动注入失败。
原因分析: 普通类是无法实现@Autowired等自动注入的,需要将该类也注入到spring容器中,像常见的Controller层中使用@Controller将类加入容器,再自动注入Service层的实例;Service层使用@Service将类加入到容器,再自动注入DAO层的实例;DAO层使用@Mapper将类加入到容器中,或者使用@MapperScan将dao包下类扫描在spring容器中进行注册。

解决方法:

一、使用@Component将该普通类注册在Spring容器中,接着就可以@Autowired等注解自动注入容器中的实例。

二、将这个普通类中的方法及变量都定义成静态方法和静态变量,在该普通类中,可以使用该类的类名.方法名使用方法;
或者该类对象名.方法名使用方法,即使该对象为空,也可以使用该静态方法;因为在编译过程中会将对象名为空的静态方法自动替换为该静态方法的类名。

值为null的对象为什么可以调用静态方法而不报错(空指针)呢?

三、有的时候有一些类不想注入到容器中,有Spring容器实例化,但是又想使用Spring中的一些容器,所以就可以借助工具类来获取。
SpringBoot中普通类无法通过@Autowired自动注入Service、dao等bean解决方法

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值