java - 我的 @Autowired在这个里边是null的 ,在另外的都可以只有这一个是 null,请问这是怎么回事
黄舟
黄舟 2017-04-18 10:38:00
[Java讨论组]
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
迷茫

你第一个MusicController 使用了 @Controller 注解,使用了该注解并且该类的包在spring的包扫描范围内,则这个类就会被spring托管了,只有被spring托管的类,才能被spring注入其他的类。

你第二个类CeshiThreadController 没有使用@Controller 注解,spring 不会帮你管理这个类,自然也就注入不了BookDao了。
你的这个问题解决有两种方式:
1.在CeshiThreadController 前面加入spring相关的注解,如@Controller @Component
2.还有一只方法,我看你是继承了Thread,一般这种方式,你可以通过CeshiThreadController的构造函数将BookDao 构造进去即可。

public class CeshiThreadController extends Thread {

    private BookDao bookDao;
    public CeshiThreadController(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    
    @Override
    public void run() {
        Book book = new Book();
        bookDao.add(book);
    }
}
高洛峰

没有声明为一个Spring Bean交给Spring容器来管理。

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

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