我有两个项目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;
}
时,尝试使用A
从A
获取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。这使它工作!所以我觉得我在这里有一些弹簧上下文的问题。但我真的不知道还能做些什么。
任何建议都会有所帮助,
谢谢!