在Spring中从RunTime创建的类访问静态Application方法失败

时间:2018-01-25 18:56:55

标签: java spring spring-boot pom.xml applicationcontext

我有两个项目A和B.我将B添加为A的pom dependecy。 我的项目A是springboot应用程序,其中Application.java类实现了ApplicationContextAware 项目B还有一个实现App.java的{​​{1}}类。在两者中,我将ApplicationContext添加到静态变量ApplicationContextAware

context

当我启动@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } 时,尝试使用AA获取B的Bean,如:

context

应用程序B有一个类 Class<?> klass = Class.forName(klassName); Myclass myclass = (MyClass) App.context.getBean(klass) ,它有一个方法1,它基本上用一些外部配置参数实例化另一个类init()。问题发生在类2的构造函数中,我尝试为2创建bean。

我得到Myclass,但是如果我检查(调试)NoSuchBeanDefinitionException : No qualifying bean of type Myclass我可以看到我的班级在那里定义。

另一个奇怪的行为是,如果我尝试从此调试断点中看到App.context.classLoader(),则Application.context为空。当我从项目A的类中访问此相同属性时,此相同的context上下文不为null。

我测试过将B添加到项目A作为文件夹(复制所有内容),而不是将其用作jar。这使它工作!所以我觉得我在这里有一些弹簧上下文的问题。但我真的不知道还能做些什么。

任何建议都会有所帮助,

谢谢!

0 个答案:

没有答案