我有服务MyStaticService
正在使用DAO进行一些计算。
如何将MyDao
对象注入类字段?
我尝试使用@Autowired
实现setter,但当我调用doCalculations(..)
时,DAO为null
。我做错了什么?
public class MyStaticService
{
private static MyDao dao;
public static int doCalculations(..){
dao.doSmth()
// omitted
}
}
答案 0 :(得分:0)
首先,你不能在不受Spring管理的类中自动装配Spring bean。
因此,在您的示例中,即使您的DAO是有效的Spring托管bean,也无法在MyStaticService中注入它。当然它总是为空。如果您的静态服务类本身不是Spring Component
Spring依赖注入只适用于由Spring IOC容器管理的类。
你的StaticService类更适合成为Singleton类,因此将它声明为Spring组件没有任何害处。
@Component
public class MyStaticService
然后你可以自动装配你的DAO课程。
理想情况下,服务类应该是具有其他单例依赖关系的单例,例如你的DAO。
答案 1 :(得分:-1)
您需要初始化对象以便访问MyDao()类的函数,如下所示:
dao = new MyDao();
或在您创建实例时
private static MyDao dao = new MyDao();
否则它将始终显示为空