Java 春季国际奥委会引导赛有可能吗

Java 春季国际奥委会引导赛有可能吗,java,spring,inversion-of-control,Java,Spring,Inversion Of Control,我的应用程序是一个使用SpringIOC的独立Java应用程序。使用ApplicationContext引导应用程序可以在内存中加载35个服务,然后在我的应用程序的JVM生命周期实例中使用这些服务。这种引导大约需要6-7分钟,这使得单元测试变得困难 这是我必须执行的一系列步骤,我正在尝试避免这些步骤,并且仍然使用Spring: 引导(Spring),然后是实际的业务逻辑代码 测试代码 在测试之后,我发现了一些我想要改变的东西,这意味着我必须停止JVM,修改代码,重新启动它,此时Spring再次启

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

这是我必须执行的一系列步骤,我正在尝试避免这些步骤,并且仍然使用Spring:

  • 引导(Spring),然后是实际的业务逻辑代码
  • 测试代码
  • 在测试之后,我发现了一些我想要改变的东西,这意味着我必须停止JVM,修改代码,重新启动它,此时Spring再次启动应用程序大约需要6-7分钟

  • 如何在同一个JVM实例中测试修改后的代码而不必重新启动JVM?

    没有简单的解决方案

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

  • 尝试模拟部分服务。特别是在junit测试中,建议使用praxis。在支持IOC的体系结构中,这应该很容易。在手动测试中,您可以使用假服务

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

  • 尝试类似JRebel的东西,它承诺消除热部署问题(经过14天的评估,您将不得不购买它)。但是很多时候,扩展的hot deploment并没有帮助,因为您必须清理应用程序上下文


  • 这个问题没有简单的解决办法

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

  • 尝试模拟部分服务。特别是在junit测试中,建议使用praxis。在支持IOC的体系结构中,这应该很容易。在手动测试中,您可以使用假服务

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

  • 尝试类似JRebel的东西,它承诺消除热部署问题(经过14天的评估,您将不得不购买它)。但是很多时候,扩展的hot deploment并没有帮助,因为您必须清理应用程序上下文


  • 我想这是不可能的,但是你建议的选项是有意义的,是有用的。我想这是不可能的,但是你建议的选项是有意义的,是有用的。