问题 如何优化Google App Engine应用程序的Spring Framework使用率


Google App Engine 前端实例是动态缩放的。这意味着 App Engine 在负载增加时自动创建新实例,在不使用实例时关闭实例。重新加载实例可能会导致用户的额外延迟。前端实例也有一个 60 seconds 完成给定请求的截止日期。

正如我正在使用 Spring MVC and Spring IOC 在我的GAE应用程序中,为了优化Spring Framework的使用,我已经完成了 App Engine应用程序的最佳实践

在那个链接中,我完全与该部分混淆 减少或避免使用关系自动装配 。它说 automatic wiring 可以显着缩短在应用程序初始化期间解析bean所需的时间,因此他们建议使用autowire byName 而不是使用autowire byType 。

所以我的问题是如何自动装配 byName 减少豆的解析时间?? 。而且我想知道有没有更好的注入豆子的方法?有没有最好的做法 Spring IOC 减少应用程序初始化时间。


5030
2017-11-23 18:38


起源

您可以忽略Spring组件扫描(和自动装配)并定义所有bean及其依赖项。因此,没有时间来解决依赖关系,我认为使用Java Config比XML配置更容易维护。 - Amir Pashazadeh


答案:


让我回答所有的答案

所以我的问题是autowire byName如何减少bean的解析时间?

已经由apurvc解释过,特别是如果你使用接口或者你使用大量的类继承 Spring必须检查类的层次结构

我想知道有更好的注入豆子的方法吗?

  1. 是的,不要通过autowire注入bean但是 使用set或get属性作为 您可以;我使用这个政策。
  2. 避免自动扫描 零件
  3. 使用 独生子 或bean池或工厂重用或构造对象

Spring IOC是否有任何减少应用程序的最佳实践   初始化时间。

  1. 使用延迟初始化(@懒 注解)
  2. 放不依赖豆 在顶部 XML定义

但如果您是JEE开发人员,那么您真的不需要这些解决方案。


4
2018-01-11 20:55





Autowire“byType”显然必须使用某种机制(和一些处理)来正确识别bean,而使用“byName”提供直接识别。

比喻一组多种猫和狗。要从群体中找到梗犬,您必须首先识别所有品种,但是当您使用狗的名称时,它更容易并且改善识别。

如果包中有许多类,在应用程序启动期间需要一段时间,Spring会对类中的注解类进行扫描,如果包中有许多类,因此建议使用autowire byName。


7
2017-11-25 06:04



谢谢你的解释。它是有用的,你能解释一下吗,Spring IOC是否有任何最佳实践来减少应用程序初始化时间,特别是我正在考虑GAE。谢谢。我赞成你的答案,因为它很有用:)。 - Jayasagar
我不太了解GAE,对于Spring,您可以使用包含/排除过滤器缩小组件扫描范围。这个博客有很多春季最佳实践 gordondickens.com/wordpress/2012/07/30/... - apurvc
根据GAE文档,排除,没有多大帮助。 - Amir Pashazadeh
我不认为有关优化弹簧应用程序启动时间的GAE具体内容。只是GAE对优化弹簧应用程序启动时间感兴趣,因为它在负载增加时通过交换更便宜的简单盒子来扩展应用程序性能,因此它们必须快速初始化。 - flup