2016-11-07 81 views
1

我想知道在應用程序啓動時我應該使用setServletContext.setAttribute()來存儲數據。什麼時候應該在應用程序啓動時使用setServletContext.setAttribute()? (Spring mvc)

我想我應該用它來存儲我在我的web應用程序的許多類中共享的數據。

例如:到目前爲止,我做了一個網站,我讀了地址電子郵件等從.properties文件。我打印地址電子郵件等許多網頁,所以我創建了一個類(ConfigurationData.class),它讀取.properties文件,每一個需要一流知道地址電子郵件等「@Autowires」的ConfigurationData.class

我想知道是否應該在應用程序啓動時使用setServletContext.setAttribute()來代替許多其他類中的@Autowired ConfigurationData.class

哪個解決方案「使用」更少的服務器資源?

由於每個「@Autowired」類都是單身人士,對於同一個班級使用許多時間「@Autowired」對於服務器來說不應該是「沉重的」,應該是?

預先感謝您。

回答

1

我應該使用哪種解決方案?

它始終是更好地使用@AutowiredConfigurationData選項,因爲你可以在任何地方(比如服務層等),您的應用程序,裏面注入這個對象,其中如servletcontext對象,你可以在前端層只使用(如控制器) 。很明顯,使用@AutowiredConfigurationData是最好的選擇。

由於每個「@Autowired」類都是單例,對於同一個類使用很多時間「@Autowired」對服務器來說不應該是「沉重的」,應該是?

對同一類使用@Autowired多次不會創建許多對象(除非您正在更改bean的默認範圍),而是它們使用具有不同引用的相同對象。此外,還有一點是,即使要使用servletcontext對象,你需要在你的控制器使用@Autowired(而不是從HttpServletRequest訪問),你可以看看here

哪種解決方案「使用」更少的服務器資源?

它不會有很大的區別,因爲它們都是單身對象。 但是,當涉及性能和資源使用情況時,您需要對應用程序進行基準測試,然後找出瓶頸。一般來說,這些小東西不會成爲應用程序的瓶頸。

相關問題