2011-09-22 48 views
2

我需要將一堆圖片加載到我的Spring webapp中。出於性能原因,這應該只在啓動webapp後完成。圖像應該保存在一個單身人士訪問從多個用戶,會話等每張圖片只有一次加載圖片webapp

我已經建立一個Java Bean與initalizer加載圖像,在我的控制器我注入這個bean,並獲取圖像。工程,但注射是不正確的事情。

我怎樣才能建立一個單身bean保存圖像,並只加載圖像每個Web應用程序一次?

回答

4

您是否考慮過使用EhCache內置web caching?只需將它添加到您的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> 

而且在配置SimplePageCachingFilter緩存您ehcache.xml

<cache name="SimplePageCachingFilter" 
     maxElementsInMemory="1000" 
     eternal="false" 
     timeToIdleSeconds="31536000" 
     timeToLiveSeconds="31536000" 
     overflowToDisk="false" 
     memoryStoreEvictionPolicy="LRU" 
     statistics="true" 
     /> 

的Ehcache現在將截取靜態資源的所有客戶端的請求,一旦閱讀它們,把它們放在緩存並返回給用戶。爲了使它更好,它甚至會添加HTTP Expiry headeres,以便客戶端不會再次爲同一資源調用您。

是不是這種方法好於手工編寫的加載和緩存的單?

+0

聽起來不錯,而且使用ist是它配置過濾器的唯一必要條件嗎?不錯。在哪裏放置'ehcache.xml'?和web.xml一樣的路徑?以前從未使用過ehcache。 – Nils

+1

您需要將'ehcache.xml'放入'CLASSPATH'的根目錄(例如'/ src/main/resources')。他們有非常廣泛的文件,檢查出來看看其他功能。 –

+0

我按照你所說的配置了所有的東西,把''-Tags添加到'ehcache.xml',並通過文檔中的maven-snippet添加了ehcache。但tomcat無法啓動應用程序,'失敗 - 上下文路徑/ webapp應用程序無法啓動',看起來像tomcat無法解決web xml正確的方式..找不到具有細節的日誌條目。任何想法,是什麼造成的? – Nils