在我的项目中,我有两个 servlet 和两个 servlet 的公共(public)数据源。 第一个 servlet 是 mvc,第二个是 JAXWS。 第二个 servlet 的 @Autowired 字段始终为 null。 我检查此字段是否为 null 的决定是这样的:
public class InRequestServiceImpl implements InRequestService {
@Autowired
public InRequestDao inRequestDao;// = new InRequestDaoImpl();
public InRequestServiceImpl() {
if (inRequestDao == null) inRequestDao = new InRequestDaoImpl();
}
@Override
@Transactional
public void insertData(InRequest doc) throws IOException {
inRequestDao.insertData(doc);
}
...
}
引用问题:SPRING: visibility of autowired beans in services
问题是:对于这种情况有好的做法吗? 帮助编写干净的代码。
最佳答案
The question is : is there a good practice for this situation?
不,没有。在 90% 的情况下,如果您没有“初始化” Autowiring 字段,那么通常意味着您的类不是由依赖注入(inject)框架(在本例中为 spring)管理的。我建议您检查一下您的 Spring 配置。
例如:您是否使用 @Service
注解来注解服务类?
另外看看here这可能会有帮助
关于java - 检查 null @autowired 字段,并手动初始化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47511210/