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

时间:2014-06-13 07:02:16

标签: java spring reflection

我正在研究一个非常大的企业应用程序,有几千个bean,以及类之间的大依赖图。我们正在使用带有@Autowired字段的Spring 3(在constuctor中自动装配)。

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

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

我可以在课堂上进行迭代。我猜测递归函数中的字段,并将bean添加到appcontext,但我不知道如何...

我该怎么做?这可行吗?

1 个答案:

答案 0 :(得分:0)

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

我建议你为你的应用创建一个通用的“低级”堆栈:一些合理且通过单独的模块清楚识别的东西。完成后,开始为主要功能创建边界,并尝试仅加载它们。

如果您不能这样做,您仍然可以通过使用模拟来切割图表中的依赖项来加载测试应用程序上下文。在任何情况下,发现沿途的电线都不会给你买任何东西。