Spring @Autowired
我对Spring @Autowired annotation.Please帮助有疑问.
在Spring中,当我尝试按以下顺序使用@Autowired时
控制器->服务
在控制器中,我自动定义了Service对象,在Service中使用了自动Dao对象。
这个注射链工作得很好。
在strutrs2+Spring中,我用这种方式应用了@ Annotation
操作->服务->Dao
这个注射链也很好。
如果我从这个链的外部调用一个函数(例如:定制的Taglib类(从jsp)到Service类中的funtion,那么在这个Service类中,自动发布的dao对象是空的(也就是说,这个调用会阻止这个链)。
我的问题是
:这是只在注入链中的@Autowired作品吗?
发布于 2016-09-02 20:44:38
具有@Autowired字段的Bean只有在通过发送它们时才设置它们--也就是说,就像您所说的,如果您自己对它们进行自动测试。这是构造函数注入比字段注入更受欢迎的一个重要原因。而不是做
@Service
public class MyService {
@Autowired
private MyDao dao;
...
}你应该这样做
@Service
public class MyService {
private final MyDao dao;
@Autowired
public MyService(MyDao dao) {
this.dao = dao;
}
}这样,当您无法依赖服务进行后处理时(例如使用jsp标记库),您可以简单地用MyDao对象实例化一个新实例,并在您的愉快的过程中。
https://stackoverflow.com/questions/39299746
复制相似问题