Autowired must be defined in Spring bean @Component/@Service

概述

今天写代码时碰到一个问题,现记录如下:今天在一个类中注入一个bean对象,结果提示Autowired members must be defined in valid Spring bean (@Component|@Service|…),它的含义就是:自动注入对象必须定义在有效的spring bean内,也就是说只有本身作为bean的类才能注入其他对象。

报错代码如下:

public class LogQueryBiz {
    @Autowired
    private ErrorDetailService errorDetailService;
	
	//todo
}

此时@Autowired上会有黄色警告,并提示:Autowired members must be defined in valid Spring bean (@Component|@Service|…)

修改代码为如下所示时成功解决问题:

@Component
public class LogQueryBiz {
    @Autowired
    private ErrorDetailService errorDetailService;
	
	//todo

这也正是警告信息所描述的,自动注入对象必须定义在有效的spring bean内,即需要将LogQueryBiz定义为bean,才能在该类中注入其他bean

扩展知识:一般而言,标注有(@Component|@Service|...)注解的类中不应该有static方法和static变量,这是因为标注有(@Component|@Service|...)的类本身是以对象来调用方法的,即方法是属于对象的,而static标注的方法和成员数据都是属于类的。

你可能感兴趣的:(小知识点,java,spring)