Spring IOC Bootstrapping是可能的

时间:2013-09-07 12:53:25

标签: java spring inversion-of-control

我的应用程序是一个使用Spring IoC的独立Java应用程序。使用ApplicationContext加载引导应用程序可以在内存中使用35个服务,然后在我的应用程序的JVM生命周期实例中使用这些服务。这种引导需要大约6-7分钟,这使得单元测试变得困难。

这是我要做的一系列步骤,我试图避免并仍然使用Spring:

  1. Bootstrap(Spring),然后是实际的业务逻辑代码。
  2. 测试代码。
  3. 经过测试,我发现了一些我想要改变的东西,这意味着我必须停止JVM,修改我的代码,再次启动它,此时Spring再次需要大约6-7分钟来引导应用程序。
  4. 如何在不强制重启JVM的情况下在同一个JVM实例中测试我修改过的代码?

1 个答案:

答案 0 :(得分:4)

这个

没有简单的解决方法

我知道三种可能的方法来避免你的问题:

  1. 尝试模拟部分服务。特别是在junit测试中,这是推荐的实践。在IOC ready架构中,它应该很容易。在手动测试中,您可以使用虚假服务。

  2. 切换到OSgI架构。这将允许您启动,停止和重新部署单个服务。但是你必须使用一个OSgI容器,它需要6-7分钟的时间才能切换。

  3. 尝试像JRebel这样的东西,它可以消除热部署的问题(经过14天的评估,你将不得不购买它)。但很多时候延长热门开发都没有用,因为你必须清理你的应用程序环境。