4

私はSpring Webプロジェクトを持っており、アプリケーションコンテキストが初期化された後にいくつかのクラスをロードする必要があります。これらのクラスは将来的に使用されるためです。したがって、パフォーマンスを向上させるために、使用前にそれらをプリロードしようとします。

どうやってするの ?

助けてください。

ありがとう。

4

2 に答える 2

2

クラスを JVM にロードするには、単にClass.forName('com.foo.bar.MyClassToPreLoad')メソッドを呼び出すだけで十分です。たとえば、独自の実装でjavax.servlet.ServletContextListenerそれを実行し、web.xml に登録することができます。

<listener>
    <listener-class>com.foo.bar.MyClassPreloadingContextListener</listener-class>
</listener>

または、インターフェースを実装する任意の Spring Bean で実行org.springframework.beans.factory.InitializingBeanできます。または、インターフェイスを実装したくない場合は、引数なしで任意の Bean メソッドで実装し、この Beanのinit-methodとして登録できます。

<bean class="com.foo.bar.MyClassPreloadingBean" init-method="preloadClasses"/>

詳細については、 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-lifecycle-initializingbeanを参照してください。

またはhttp://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-postconstruct-and-predestroy-annotationsアノテーションベースの構成を好む場合。

それが役に立てば幸い。

于 2013-02-11T08:53:31.153 に答える
1

あなたのBeanのスコープについて言及していないと思います.アプリケーションコンテキストでスコープについて言及していない場合、デフォルトのコンテナはシングルトンスコープを使用します.コンテナを閉じない限り、Beanの同じインスタンスがursシステム全体で使用されることを意味します. Bean は常に同じままです。デフォルトの動作を上書きする場合は、urs アプリケーション コンテキストで Bean のスコープを使用できます。このリンクで、同じ問題について質問したことがあります。 Tomcat を使用した春のプリロードと遅延ロード

于 2013-02-11T12:12:46.447 に答える