我有一个问题是在我的抽象基类中自动装配一个对象。它总是给我null而不是实例。请帮忙。
基类:
public abstract class BaseClass implements IReq<Req> {
@Autowired
protected ReqDao dao;
protected void updateReq() {
dao.update();
}
}
儿童班:
@Component
public class ChildClass extends BaseClass {
...
}
ReqDao课程:
@Component
public class RptRequestDao {
public void update(){
...
}
}
我想在Base类中使用update()函数,这意味着在我的ChildClass中,我不会覆盖那个。这是问题吗?如果是,那么通常的做法是什么?提前致谢。
答案 0 :(得分:0)
在您初始化对象时,按需创建bean, RepoDao是私有的,所以它不会被固有的类本身,你要么需要把
@Component
public class ChildClass extends BaseClass {
@Autowired
private ReqDao dao;
或在BaseClass中使其受保护/公开,确保public会使其可以访问违反封装的其他类
答案 1 :(得分:0)
使用@Autowired实例化您的子类
public class SomeClass{
@Autowired
ChildClass childClass; //IMPORTANT
}
当您尝试实例化childClass时发生错误:
public class SomeClass{
ChildClass childClass = new ChildClass();
}
答案 2 :(得分:-1)
BaseClass是抽象的,你可以实例化它。你需要在ChildClass中使用你的ReqDao进行自动装配。弹簧只会在它创建该类的实例时自动装配。希望帮助
答案 3 :(得分:-1)
检查如何实例化子类。确保您没有使用“ new”关键字来实例化子类。
ChildClass cc = new ChildClass() // Not recommended
您必须自动装配子类,并让spring负责bean的创建。