我什么时候应该在应用程序启动时使用setServletContext.setAttribute()? (春天mvc)

时间:2016-11-07 15:02:20

标签: java spring-mvc server

我想知道何时应该在应用程序启动时使用setServletContext.setAttribute()来存储数据。

我想我应该用它来存储我在我的Web应用程序的许多类中共享的数据。

例如:到目前为止,我有一个网站,其中我从.properties文件中读取地址电子邮件等。我在许多页面中打印地址电子邮件等,因此我创建了一个类(ConfigurationData.class),该类读取.properties文件,以及每个类需要知道地址电子邮件等“@AutowiresConfigurationData.class

我想知道在应用程序启动时我是否应该使用@Autowired ConfigurationData.class来代替setServletContext.setAttribute()

哪种解决方案“使用”更少的服务器资源?

由于每个“@Autowired”类都是单例,对于同一个类使用很多时间“@Autowired”对服务器来说不应该“重”,应该是吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

我应该使用哪种解决方案?

使用@Autowired ConfigurationData选项总是更好,因为您可以在应用程序内的任何位置(如服务层等)注入此对象,其中servletcontext对象可以仅用于前端层(如控制器)。很明显,使用@Autowired ConfigurationData是最佳选择。

因为每个" @ Autowired" class是一个单身人士,使用很多时间" @ Autowired"对于同一个班级来说,重要的是"重的"对于服务器,应该是?

对同一个类多次使用@Autowired不会创建很多对象(除非您要更改bean的默认singleton范围),而是使用具有不同引用的相同对象。另外,还有一点是,即使您想使用servletcontext对象,也需要在控制器中使用@Autowired(而不是从HttpServletRequest访问),您可以查看{{ 3}}

哪种解决方案"使用"减少服务器资源?

它们不会产生很大的不同,因为它们都是单例对象。 但是,在性能和资源使用方面,您需要对应用程序进行基准测试,然后找出瓶颈。当然,一般来说,这些小东西不会成为应用程序的瓶颈。