Java 从代码/获取依赖项动态构建ApplicationContext

Java 从代码/获取依赖项动态构建ApplicationContext,java,spring,reflection,Java,Spring,Reflection,我正在开发一个非常大的企业应用程序,有几千个bean,类之间有一个很大的依赖关系图。我们正在使用Spring3和@Autowired字段(constructor中的Autowired) 我正在尝试为其中一个控制器创建一个集成测试,它有多个依赖项,每个都有更多的依赖项,由于糟糕的项目结构和依赖关系图,创建需要解决的类的xml定义几乎是不可能的-因此我无法构建ApplicationContext 我试图做的是扫描类中的字段,如果它们是bean(组件、服务等),则从代码中将它们添加到Applicati

我正在开发一个非常大的企业应用程序,有几千个bean,类之间有一个很大的依赖关系图。我们正在使用Spring3和@Autowired字段(constructor中的Autowired)

我正在尝试为其中一个控制器创建一个集成测试,它有多个依赖项,每个都有更多的依赖项,由于糟糕的项目结构和依赖关系图,创建需要解决的类的xml定义几乎是不可能的-因此我无法构建ApplicationContext

我试图做的是扫描类中的字段,如果它们是bean(组件、服务等),则从代码中将它们添加到ApplicationContext

我可以在递归函数中使用relefection迭代类的字段,并将bean添加到appcontext,但我不知道如何


我该怎么做?这可行吗?

除非我遗漏了什么,否则你试图解决错误的问题。如果您的模块结构处于这种状态,那么尝试动态构建上下文对您没有帮助,因为最终您将加载几乎整个应用程序

我建议您为您的应用程序创建一个通用的“低级”堆栈:它是合理的,并且由单独的模块明确标识。一旦有了这些,就开始为主要功能创建边界,并尝试只加载它们


如果您不能这样做,您仍然可以通过使用mock来剪切图形中的依赖项来加载测试应用程序上下文。在任何情况下,发现要连接的字段都不会给您带来任何好处。

用bean的惰性初始化构造应用程序上下文怎么样?您的意思是什么?请添加一些细节:)你完全正确。这是我们提出的解决方案,但它被拒绝了,因为为了实现这一目标需要做大量的工作。。。使用mock:是的,这就是我们到目前为止使用的,这只是一个探索性的工作,看看“真正的代码”是否可以在int测试中使用。。。