java - 检查 null @autowired 字段,并手动初始化它

标签 java spring servlets autowired

在我的项目中,我有两个 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/

相关文章:

java - 如何将 google api access_token 从java服务器传递到gapi javascript客户端?

java - 什么是常见的 Servlet-JSP GUI 小部件?

java - 如何使用 Hibernate 和 Spring-boot 从 JPA 查询返回 SUM?

java - 类似于非 EJB 的 Spring 中的 EJB 布线

java - Tomcat 和 SLF4J - 不将日志写入文件

java - 从属性中获取 Null 值

servlets - java.lang.NoClassDefFoundError : org/apache/commons/lang3/ObjectUtils

java - 处理(Java): How to make a plotted sine function look continuous instead of separate dots when the amplitude of the function increases

java - 你用什么集合来接受oracle select 1的返回值?

java - "run "gcloud beta 应用程序创建 "in your console."- 无法在控制台中输入?