Java 每个spring webapp仅加载一次图像
我需要将一堆图像加载到我的Spring webapp中。出于性能原因,只有在启动webapp后才能执行此操作。图像应保存在一个单件中,以便多个用户、会话等进行访问 我已经用一个初始化器构建了一个JavaBean来加载图像,在我的控制器中我注入这个Bean并获取图像。行得通,但注射不是正确的选择 如何构建一个单例bean来保存图像,并且每个webapp只加载一次图像?您考虑过使用内置的吗?只需将其添加到您的Java 每个spring webapp仅加载一次图像,java,spring,singleton,javabeans,startup,Java,Spring,Singleton,Javabeans,Startup,我需要将一堆图像加载到我的Spring webapp中。出于性能原因,只有在启动webapp后才能执行此操作。图像应保存在一个单件中,以便多个用户、会话等进行访问 我已经用一个初始化器构建了一个JavaBean来加载图像,在我的控制器中我注入这个Bean并获取图像。行得通,但注射不是正确的选择 如何构建一个单例bean来保存图像,并且每个webapp只加载一次图像?您考虑过使用内置的吗?只需将其添加到您的web.xml: <filter> <filter-name>
web.xml
:
<filter>
<filter-name>pageCachingFilter</filter-name>
<filter-class>net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pageCachingFilter</filter-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<cache name="SimplePageCachingFilter"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="31536000"
timeToLiveSeconds="31536000"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"
statistics="true"
/>
EhCache现在将拦截所有客户端对静态资源的请求,读取它们一次,将它们放入缓存并返回给用户。为了使它更好,它甚至会添加HTTPExpiry
headeres,这样客户端就不会为相同的资源再次呼叫您
与单例中手动编写的加载和缓存相比,这种方法不是更好吗?听起来不错,使用ist是配置过滤器的唯一必要条件?美好的将
ehcache.xml文件放在哪里?路径是否与web.xml相同?以前从未使用过ehcache。您需要将ehcache.xml
放在类路径的根目录中(例如/src/main/resources
)。他们有非常广泛的文档,请查看以查看其他功能。我按照您所说的配置了所有内容,将
-标记添加到ehcache.xml
,并通过文档中的maven代码片段包含ehcache。但是tomcat无法启动应用程序,失败-上下文路径/webapp上的应用程序无法启动
,看起来tomcat无法正确解析web xml。。尚未找到包含详细信息的日志条目。任何想法,是什么导致的?很难说,你真的必须找到确切的例外。它可以是任何内容:ehcache.xml
或web.xml
未找到/格式不正确,ehcache.jar
未在类路径上找到。查看您的应用程序日志,我正在使用完全相同的配置并取得了巨大成功。在localhost.log
-->严重:异常启动筛选器页面cachingfilter java.lang.ClassNotFoundException:net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter
web.xml看起来像您的,WEB-INF/lib
中包含的jar有slf4j.jar
,ehcache core.jar
和ehcache terracotta.jar