我有一个 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 方法:
<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-postconstruct-and-predestroy-annotations如果您更喜欢基于注释的配置。
希望能帮助到你。
我想你没有提到你的 bean 的范围。如果你没有在应用程序上下文中提到范围,那么默认容器使用单例范围。这意味着除非你关闭容器,否则整个 urs 系统都使用相同的 bean 实例。 bean 保持不变。如果你想覆盖默认行为,使用可以为 urs applicationcontext 中的 beans 提供范围。你最好在这个链接中看到我曾经问过关于同样问题的问题。 使用tomcat在spring中进行预加载和延迟加载