1

私のアプリケーションは、Spring IoC を使用するスタンドアロンの Java アプリケーションです。ApplicationContext ロードを使用してアプリケーションをブートストラップすると、メモリ内に 35 個のサービスがあり、アプリケーションの JVM ライフサイクル インスタンス全体で使用されます。このブートストラップには約 6 ~ 7 分かかるため、単体テストが困難になります。

これは私がしなければならない一連のステップです。これを避けて、まだSpringを使用しようとしています:

  1. Bootstrap (Spring) と実際のビジネス ロジック コード。
  2. テストコード。
  3. テスト後、変更したいものを見つけました。つまり、JVM を停止し、コードを変更して、再度起動する必要があります。この時点で、Spring はアプリケーションのブートストラップに約 6 ~ 7 分かかります。

JVM を強制的に再起動せずに、変更したコードを同じ JVM インスタンスでテストするにはどうすればよいですか?

4

1 に答える 1

4

これには簡単な解決策はありません

問題を回避する 3 つの方法を知っています。

  1. サービスの一部をモックしてみてください。特にjunitテストでは、これは推奨される方法です。IOC 対応のアーキテクチャでは、それは簡単なはずです。手動テストでは、偽のサービスを使用できます。

  2. OSgI アーキテクチャに切り替えます。これにより、単一のサービスを開始、停止、および再デプロイできます。ただし、OSgI コンテナを使用する必要があり、切り替えには 6 ~ 7 分の倍数がかかります。

  3. ホットデプロイメントの問題を解消することを約束する JRebel のようなものを試してみてください (14 日間の評価の後、購入する必要があります)。しかし、多くの場合、アプリケーション コンテキストをクリーンアップする必要があるため、拡張されたホット デプロメントは役に立ちません。

于 2013-09-08T18:51:04.123 に答える