一个@Component注解引发的血案
一个注解@Component引发的血案
首先,我们这个是用springboot架构来实现的业务
这是项目包结构和配置文件结构这是定时需要执行的任务
这是我执行PromoCodeCMCJob这个定时器的报错信息
问题是这样的:加了两个MQ之后才报错的这个信息,当我执行启动PromoCodeCMCJob定时任务的时候就报错,报错信息如上,这个时候我两个MQ任务的定时任务都加了@Component和 @Autowired private MQProduceFactory gpRepayProducer 注入,此时就报错了,刚开始的时候我只是 @Autowired private MQProduceFactory gpRepayProducer 注释掉然后再启动PromoCodeCMCJob这个定时任务,什么,居然没问题,这个时候完全能执启动,所以此时我就断定是这个MQProduceFactory注入原因引起的,但是我有MQ队列,这个是MQ的生产者,注释掉就不能忘MQ生产消息了,所以注释掉这个是不行的,然后我就想其它办法去解决,像重新分包,想了各种解决办法都没有解决,始终没有想到去掉@Component这个注解,这个注解翻译是组件的意思,是把当前类注入到IOC容器中,直到我研究了半天左右的时候,一直没有想到点上,浪费了很多时间,快下班了的时候让我想到了,既然被在IOC容器中了,那我不把他注入进去不就完了,这是我就试着把@Component注解去掉,然后在配置文件中加入bean,变成了这样
配置文件中不加这个bean的话启动定时任务也是会报错的,这样的话我就把需要的MQProduceFactory这个放入到bean里面了,而没有在IOC了,最后就完美的解决了,有MQ三个定时任务都能运行了!
思考:@Component注解是IOC容器层面的,是个很大的容器,能包容很多,而bean只是一个工厂,IOC容器能包含着bean工厂,IOC容器中可以有很多bean工厂,但是bean里面只有一个,一般都是通过bean标签的id来标识的,所以在项目中没有最完美的方案,只有更好的方案,只有把架构,方案都用对了,才能更好去解决业务需求的问题
一个@Component注解引发的血案相关推荐
- 一个“Spring轮子”引发的“血案”(4)
事件的升级,国产技术社区中所存现出来的浮躁.世态炎凉,在我的一篇<80前>一文,终于引爆了出来. <80前>一文是一个长篇,是我吃这么20多年饭,读了不少书的一些所思.所误.所 ...
- 一个由正则表达式引发的血案
阿里妹导读:周末快到了,今天为大家送上一篇很有意思的小文章,具有提神醒脑之功效.作者是来自阿里巴巴LAZADA产品技术部的申徒童鞋. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中 ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
- 一个Sqrt函数引发的血案
我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...
- 一个由copyBean引发的血案
一次开发中使用轮子Bean互转突然发生了问题 Paper paper = new Paper(); paper.setdLevel(1); PaperDTO dto = new PaperDTO(); ...
- 一个数字键盘引发的血案——移动端H5输入框、光标、数字键盘全假套件实现...
https://juejin.im/post/5a44c5eef265da432d2868f6 为啥要写假键盘? 还是输入框.光标全假的假键盘? 手机自带的不用非得写个假的,吃饱没事干吧? 装逼?炫技 ...
- 一个缓存穿透引发的血案
2010年9月23日,Facebook遭遇了迄今为止最严重的宕机事件之一,网站关闭了4个小时.为恢复工作,不得不让FB下线,影响了10亿用户. 在事后的故障报告中提到: 今天,我们修改了一个错误的配置 ...
- 一个时间字段引发的血案
hi ,大家好,我是三天打鱼,两天晒网的小六六 前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 种一棵树最好 ...
- 一个变量类型引发的血案
想要用WebGL实现一个响应鼠标画点的程序.无奈一直出现: 比对了2天,逐字校对,最终找到了原因: gl_PointSize是浮点数....浮点...浮...扑街!! gl_PointSize = 1 ...
最新文章
- 如何修改VC6的项目名
- 360 mysql账户_MYSQL用户管理
- openssl不是内部或外部命令_OpenSSL新架构蓝图
- Samba Linux 和windows 共享
- ECStore在Win环境下如何运行CMD命令
- 手机自带计算机的功能,手机上的这3个小功能,比电脑方便好用,你知道吗?...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_3 Mybatis中编写dao实现类的使用-修改删除等其他操作...
- leach算法的实现过程_LEACH-REC算法的研究及实现
- 高校毕业生就业信息管理系统的设计与实现(Spring + Spring MVC +Hibernate)
- bio-linux软件包教程,biolinux包含软件
- Win10系统中查看是否开启虚拟化
- 海军某训练基地落户上海崇明岛 建设用地2500亩
- ipad html 自定义裁剪图片大小,如何在iPhone或iPad上裁剪和编辑照片 | MOS86
- nividia-smi命令不显示占用显卡的进程
- Chaosblade 混动工程之网络延迟实践
- 代码随想录第四天 leetcode 24、19、206
- 物联网项目开发实战案例
- 宠物店 java 报告_宠物店社会实践报告通用范文
- 气象站可以用计算机分析什么数据,多功能气象站有什么用
- 产品创新与研发管理的八大典型问题