搜索
在Service中注入Dao不成功,Dao为null。
高洛峰
高洛峰 2016-10-27 11:39:53
[Java讨论组]

在一个普通类中使用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为空的。

1.png

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>


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

两种方式
1.每次调用这个你所谓的普通类的方法时,在外部依赖dao,把dao实例传进来,并且删掉这个普通类里的关于spring的代码.
2.把你这个普通类加注解@Component,使当前类被spring管理,给scope为多例,并在类里依赖注入你的dao及service.

update:

先在spring中加上这个bean:

1.png

然后在你要使用线程的类里面注入

1.png

用直接就是executor.execute();

1.png

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号