私はSpring Webプロジェクトを持っており、アプリケーションコンテキストが初期化された後にいくつかのクラスをロードする必要があります。これらのクラスは将来的に使用されるためです。したがって、パフォーマンスを向上させるために、使用前にそれらをプリロードしようとします。
どうやってするの ?
助けてください。
ありがとう。
私はSpring Webプロジェクトを持っており、アプリケーションコンテキストが初期化された後にいくつかのクラスをロードする必要があります。これらのクラスは将来的に使用されるためです。したがって、パフォーマンスを向上させるために、使用前にそれらをプリロードしようとします。
どうやってするの ?
助けてください。
ありがとう。
クラスを 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アノテーションベースの構成を好む場合。
それが役に立てば幸い。
あなたのBeanのスコープについて言及していないと思います.アプリケーションコンテキストでスコープについて言及していない場合、デフォルトのコンテナはシングルトンスコープを使用します.コンテナを閉じない限り、Beanの同じインスタンスがursシステム全体で使用されることを意味します. Bean は常に同じままです。デフォルトの動作を上書きする場合は、urs アプリケーション コンテキストで Bean のスコープを使用できます。このリンクで、同じ問題について質問したことがあります。 Tomcat を使用した春のプリロードと遅延ロード