Java 类加载应用程序上下文Spring

Java 类加载应用程序上下文Spring,java,spring,class,loading,applicationcontext,Java,Spring,Class,Loading,Applicationcontext,我有一个SpringWeb项目,我需要在初始化应用程序上下文后加载一些类,因为这些类最终将在将来使用。因此,我尝试在使用前预加载它们以提高性能 怎么做 请帮忙 谢谢 要将类加载到JVM中,只需调用class.forName('com.foo.bar.myclasstopload')方法即可。 您可以在自己的javax.servlet.ServletContextListener实现中这样做,然后在web.xml中注册它 <listener> <listener-clas

我有一个SpringWeb项目,我需要在初始化应用程序上下文后加载一些类,因为这些类最终将在将来使用。因此,我尝试在使用前预加载它们以提高性能

怎么做

请帮忙


谢谢

要将类加载到JVM中,只需调用
class.forName('com.foo.bar.myclasstopload')
方法即可。 您可以在自己的
javax.servlet.ServletContextListener
实现中这样做,然后在web.xml中注册它

<listener>
    <listener-class>com.foo.bar.MyClassPreloadingContextListener</listener-class>
</listener>
有关详细信息,请参阅

或者,如果您更喜欢基于注释的配置


希望有帮助。

我想你没有提到你的bean的作用域。如果你没有在应用程序上下文中提到这个作用域,那么默认容器使用单例作用域。这意味着整个urs系统都使用相同的bean实例,除非你关闭容器。bean实例保持不变。如果你想覆盖默认行为的使用可以为urs applicationcontext中的bean提供作用域。您最好在这个链接中看到,我曾经问过关于相同问题的问题。

任何人请帮忙。Thank.ApplicationContext ctx=新的类路径XMLApplicationContext(“类路径:ApplicationContext.xml”);GenericDAOImpl dao=(GenericDAOImpl)ctx.getBean(“GenericDAOImpl”);ClassLoader clsLoader=Thread.currentThread().getContextClassLoader();clsLoader.loadClass(arg0);是这一个还是有更好的方法?请提供一些答案。您的评论可能会增加混乱。是否要预加载bean?使用applicationContext定义加载所有bean—applicationContext实现的默认行为是在启动时急切地预实例化所有单例bean。
<bean class="com.foo.bar.MyClassPreloadingBean" init-method="preloadClasses"/>