java - 在Service中注入Dao不成功,Dao为null。

查看:189
本文介绍了java - 在Service中注入Dao不成功,Dao为null。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在一个普通类中使用bean,代码如下:

public class ReceiveThread extends Thread {
    @Autowired
    private ApplicationContext ctx;
    ConcentratorService concentratorService;
    
    public void init() {
        ctx = new FileSystemXmlApplicationContext("/WebRoot/WEB-INF/config/datasource.xml");
        concentratorService =(ConcentratorService) ctx.getBean("concentratorService");
    }

    public void run() {
        String macAddr="12:12:12:12:12:12";
        Concentrator c=concentratorService.findConcentratorByCaddress(macAddr);
    }
}

运行多线程之后,service被成功注入了,但是dao为空的。

ConcentratorService中的findConcentratorByCaddress函数如下:

@Service("ConcentratorService")
public class ConcentratorServiceImpl implements ConcentratorService{
    @Autowired
    ConcentratorDao concentratorDao;
    public Concentrator findConcentratorByCaddress(String caddress) throws Exception{
            // TODO Auto-generated method stub
            return concentratorDao.findConcentratorByCaddress(caddress);
    }
}

各位,求救!
============更新内容============
ConcentratorDao:(ConcentratorService雷同,只是把Dao改成Service)

public interface ConcentratorDao {
    public List<Concentrator> getConcentratorListByMacAddresses(String[] macAddr) throws Exception;
}

datasource.xml片段

    <bean id="concentratorDao" class="com.streetLight.dao.ConcentratorDaoImpl"></bean>
    <bean id="concentratorService" class="com.streetLight.services.ConcentratorServiceImpl"></bean>

解决方案

我这个蠢人= =,当时脑袋是吃屎了。搅在一块了,把问题复杂化。真是辛苦了认真回答我这个脑残的问题的各位。
问题的根本原因是,我获取ApplicationContext引用错了xml!!!!
今天因为要重新解决这个问题。不知道为什么地就发现我这个web项目需要的xml被分成了俩,并被整合到了一个叫root_context.xml的文件中去了。所以!代码应该改成:

ApplicationContext ctx = new FileSystemXmlApplicationContext("/WebRoot/WEB-INF/config/root_context.xml");
concentratorService =(ConcentratorService) ctx.getBean("concentratorService");

才对,之后就能畅通无阻得使用bean了。希望看到这里,和我犯同样问题的鞋童们(大概只有我吧)好好反省反省自己。

这篇关于java - 在Service中注入Dao不成功,Dao为null。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆