0

スプリングアプリケーションコンテキストをオンデマンドでのみロードすることは可能ですか?シナリオは次のとおりです。ユーザーがデータベースのプロパティを入力するためのセットアップページを備えたWebアプリケーションがあります。これらはプロパティファイル内に保存され、セットアップ後に再起動すると、springsPropertyPlaceHolderConfigurerとともにapplication-context.xmlにロードされます。

ただし、初期の有効なデータベース情報がない場合、Springは開始できません。そのため、セットアップページは表示されません。コンテキストがロードされないようにするためのクリーンな方法はありますか?

私の頭に浮かぶ解決策の1つは、web.xmlのコンテキストリスナーを削除し、セットアップ後に書き戻すことですが、これはクリーンな解決策というよりは厄介なハックです。

4

2 に答える 2

3

ただ... 始めないでください。からSpringをブートストラップしていると思いますweb.xml。そこには置かないでくださいContextLoaderListener(または、セットアップ ページをかろうじて表示するための最小限のコンテキストを置きます)。

残念ながら、セットアップが終了したら、Spring コンテキストを開始 (および停止) するのはあなた次第です。それは非常に簡単です.Springをコードから起動することができますClassPathXmlApplicationContext.

于 2012-11-15T22:45:48.260 に答える
0

これについてしばらく考えた後、私は次のアプローチを取ります:

web.xmlをそのままにして、Springクラスをそれらに委任するクライアントに置き換えるだけです。だから私の場合、これは

protected class OnDemandContextLoaderListener extends ContextLoaderListener {
  @Override
  public void contextInitialized(ServletContextEvent event) {
      // some logic to find out if properly setup
      // if so:
      super.contextInitialized(event):
  }
...
}

DispatcherServletでも動作するはずです。

于 2012-11-15T23:18:26.950 に答える