我想知道何时应该在应用程序启动时使用setServletContext.setAttribute()
来存储数据。
我想我应该用它来存储我在我的Web应用程序的许多类中共享的数据。
例如:到目前为止,我有一个网站,其中我从.properties
文件中读取地址,电子邮件等。我在许多页面中打印地址,电子邮件等,因此我创建了一个类(ConfigurationData.class
),该类读取.properties
文件,以及每个类需要知道地址,电子邮件等“@Autowires
”ConfigurationData.class
。
我想知道在应用程序启动时我是否应该使用@Autowired ConfigurationData.class
来代替setServletContext.setAttribute()
。
哪种解决方案“使用”更少的服务器资源?
由于每个“@Autowired
”类都是单例,对于同一个类使用很多时间“@Autowired”对服务器来说不应该“重”,应该是吗?
提前谢谢。
答案 0 :(得分:1)
我应该使用哪种解决方案?
使用@Autowired
ConfigurationData
选项总是更好,因为您可以在应用程序内的任何位置(如服务层等)注入此对象,其中servletcontext
对象可以仅用于前端层(如控制器)。很明显,使用@Autowired
ConfigurationData
是最佳选择。
因为每个" @ Autowired" class是一个单身人士,使用很多时间" @ Autowired"对于同一个班级来说,重要的是"重的"对于服务器,应该是?
对同一个类多次使用@Autowired
不会创建很多对象(除非您要更改bean的默认singleton
范围),而是使用具有不同引用的相同对象。另外,还有一点是,即使您想使用servletcontext
对象,也需要在控制器中使用@Autowired
(而不是从HttpServletRequest
访问),您可以查看{{ 3}}
哪种解决方案"使用"减少服务器资源?
它们不会产生很大的不同,因为它们都是单例对象。 但是,在性能和资源使用方面,您需要对应用程序进行基准测试,然后找出瓶颈。当然,一般来说,这些小东西不会成为应用程序的瓶颈。