8

さて、私の要点に直接来てください。

JSPで、アプリケーションの初期化プロセスを次のように行います。

<%! public void jsp_init(){

      //Initialise the domain server to create protocol
      //Create the logging file
}%>

ここで、以前のアプリケーションを から に再構築ServletsSpring 3.2ます。

どうすればこれを行うことができSpring 3.2ますか?

私の 1 つが私colleagueにこれを行うように言いましたinitialization with Constructor of the Spring Controller

で Bean を作成し、controller classでファイルapplicationContext.xmlをロードしているためです。applicationContext.xmlContextLoadListnerweb.xml

これは初期化の正しい方法ですか?

春のApplicationListenerはどう ですか?

でアプリケーションを初期化する最良の方法はどれspring 3.2ですか?

私たちのスタックユーザーが良い解決策を提供してくれることを願っています.

4

5 に答える 5

9

適切に構成されていれば、Spring はこれを大幅に行います。本当にコードを実行する必要がある場合 (Log4J のように自動的に構成するものを使用するのではなく)、 を登録してInitializingBeanをオーバーライドすることをお勧めしますafterPropertiesSet。次に、この Bean 定義を applicationContext.xml ファイルに追加します。

<bean id="initializer" class="com.myproject.MyInitializer" />

その結果、MyInitializer.afterPropertiesSet()アプリケーションが完全に初期化されると、Spring はメソッドを呼び出します。別の方法として、アプリケーション コンテキストに登録されている Bean でアノテーションを使用することもできますが@PostConstruct、そのメソッドが呼び出されたときにアプリケーションの残りの部分が初期化されるという保証はありません。すべての設定が完了したときに実行したい場合は、初期化 Bean メソッドが最適です。この戦略を使用して、Web 要求のライフ サイクルとは独立して実行する必要があるサーバー ソケットなどを開始しました。

于 2013-07-18T15:56:37.030 に答える
6

自分で春のアプリケーションを初期化するのはなぜですか? Spring が自動的に行います: これは、Spring を初期化するようにサーバーに指示する方法です。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/app.xml</param-value>
  </context-param>

  <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>

これは展開中に発生し、すべての Bean がそこで定義され、初期化されます (遅延に応じて)。Bean が初期化されたら本当に何かをしたい場合は、使用する前にInitializingBeanを使用します。 例は次のようになります。

MyBean implements InitializingBean{
   afterPropertiesSet() {

      //do here
   }

}
于 2013-07-04T14:42:54.573 に答える
2

ContextLoaderListenerWebApplicationContextは、Springを起動するためのブートストラップのようなものですがApplicationListener、Web アプリケーションのコンテキストではなく、Java アプリケーションのレベルそのものです。

ContextLoaderListenerDispatcherServletは、アプリに複数の がある場合、または異なるサービスにマップされたサーブレット/サーブレット フィルターがある場合に、アプリのコンテキスト化のための優れた標準ツールです。基本的に、このようなアプリのさまざまなサーブレットにリスナーを用意すると便利です。これにより、きめ細かなコンテキスト化が可能になります。

あなたが構築しているアプリケーションの性質はわかりませんが、今のところ基本的なことを試していると思います。この場合、さらに複雑な設定をしている場合でも、起動時に、コンテキスト化を含むメインの初期化ルーチンを処理するコントローラーをロードすることをお勧めします。web.xml で次のようなものを使用して、コントローラー Bean を使用できます。

<servlet>
    <servlet-name>your-servlet</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

このサーベルトは、特定の URL パターンを読み取るたびにマップして呼び出すこともできます。

@RequestMapping("/welcome")         
    public ModelAndView helloWorld() 

Web デプロイメント記述子では、このビットは、サーブレットを Spring Security などの他の Spring サービスにマップするのと同じです。

<servlet-mapping>
    <servlet-name>crunchify</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

ContextLoaderListenerしたがって、コントローラーのコンストラクターを実際に使用する必要はなく、単純な初期化タスクに常にまたは他のリスナーを使用する必要もありません。それでも、アプリをスケーリングするときに必要になるため、ユース ケースを学習しておくと便利です。

Dispatcher サーブレットの詳細については、こちらをご覧ください。

http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/DispatcherServlet.html

于 2013-07-22T12:26:42.563 に答える
0

これは、Bean を使用して@PostConstruct、春に servlet-config に注入することで実行できます。ここのコードと、一番下の行の 1 つを見てください。

<beans:bean id="PlayerImportDaoImpl"
        class="com.footieview.app.importer.dao.PlayerImportDaoImpl" />

これにより、起動時にこの Bean が注入されます。この Bean のメソッドには注釈があり@PostConstructます。これは、起動時にこのメソッドが呼び出されることを意味します。

于 2013-07-04T14:37:01.030 に答える
0

Spring 3 MVC アプリケーションを作成すれば、これを行う必要はありません!

Spring MVC は JSP をサポートし、アノテーションを介してすべての構成を行うことができます

例については、 http://fruzenshtein.com/spring-mvc-creation-of-simple-controller-with-java-based-config/を参照してください。

于 2013-07-18T16:19:03.623 に答える