【问题标题】:When should I use setServletContext.setAttribute() at the application start up? (Spring mvc)我应该在应用程序启动时何时使用 setServletContext.setAttribute()? (弹簧MVC)
【发布时间】:2017-03-20 23:31:47
【问题描述】:

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

我想我应该使用它来存储我在我的网络应用程序的许多类之间共享的数据。

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

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

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

由于每个“@Autowired”类都是一个单例,所以对同一个类多次使用“@Autowired”对服务器来说不应该是“沉重”的,应该是?

提前谢谢你。

【问题讨论】:

    标签: java spring-mvc server


    【解决方案1】:

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

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

    由于每个“@Autowired”类都是单例,所以多次为同一个类使用“@Autowired”对于服务器来说不应该是“重”,应该是?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多