记录一次排除Bean加载问题

谁无暴风劲雨时,守得云开见月明


记录一次Bean加载问题。

最近因为工作和生活的原因一直没有时间去做内容输出,国庆假期悠闲一些,记录一次我排除Bean加载问题的解决思路。

由于接手了一个全新的项目,这个项目对spring做了许多的扩展,在摸清整个框架机制准备进行测试的时候我发现我写的bean文件没有生效,applicationcontext.getBean(beanname,class<?> T),我当时就懵了,很简单的bean注解怎么会没有生效呢?有多简单呢大致就这样。

@Component("A-XXXX")
public class A {

只要接触过java的同学都知道这会注入spring单例容器中进行管理。因为整个框架是公司的源码自己写的扩展。我当时第一反应有我没有读到的源码,肯定有其他的地方扩展。

第一回合
在上面描述的思想下,我坚信没有读到的忽略的源码,肯定是自己去维护了一套mapbean对象,便开始找XXXXXXaware的spring扩展接口,看有没有bean定义前后之后做处理的。浪费了几十分钟,什么都没找到。

第二回合
在上面浪费了几十分钟后,没有一丝思路我遍放弃了,开始换了思路,会不会我的注解没有生效?我回头检查了我的构造函数,好家伙发现写成了protected,spring需要public的构造器才能注入,因此我将这个问题改掉,满怀信心的改掉,运行。心想肯定启动成功,中间还上了一次厕所。

@Component("A-XXXX")
public class A {
	@Autowired
	 public A(){}
}

第三回合
上厕所回来发现,还是找不到Bean定义对象。这次把我傻眼了感觉碰到了知识盲区,开始了怀疑自己自己阶段,自己则创建了个简单项目做spring注入的测试发现public可以注入的protected不可以注入。之后遍开始求助论坛,在寻找论坛的过程中回想自己还没有什么是拉下,后面想起是maven,项目没有install。maven是用到本地仓库,编译的时候虽然大家能够调用,但是运行的时候是本地仓库的代码。没有生成jar包自然而然则不能加载对象。当时就说自己一遭。

虽然这个问题很简单,但是确实是花了不好时间去排查问题,当吃了一次亏吧。写出来让大家不要踩坑。另外打包的时候尽量用install少用package吧,package不会替换掉原来的老jar包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值