开门见山,背景:
系统初始化的时候扫包实例化bean,然后一个工具类实现ServletContextAware接口,拿到servletContext之后:
WebApplicationContextUtils.getWebApplicationContext(context).getBean(rpc.getBeanName(), clazz)
使用这个工具类获取rpc的本地目标handler对象,但是竟然报错说找不到对象:
打开debug级别的spring beanFactory启动日志:
这不就在这里么,明明已经初始化了....
后来找到这个工具类,发现是用WebApplicationContextUtils去通过servletContext获取的spring的上下文.怀疑因为版本的问题,后来替换为实现org.springframework.context.ApplicationContextAware 接口,直接注入ApplicationContext 拿着这个context去直接getBean,瞬间搞定,世界立马清净了.
后来思考原因,可能是因为我们集成RPC的这个新网贷系统是老版本的spring 3.0,估计在具体实现上有差异,我们之前的业务中从来未出现过问题.