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

时间:2013-11-23 18:38:19

标签: java spring google-app-engine spring-mvc

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

当我在GAE应用程序中使用Spring MVC and Spring IOC时,为了优化Spring Framework的使用,我已经完成了Best Practices for App Engine Applications

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

所以我的问题是autowire byName如何减少bean的解析时间? 。而且我想知道有更好的注入豆子的方法吗?是否有Spring IOC的最佳实践来减少应用程序初始化时间。

2 个答案:

答案 0 :(得分:7)

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

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

Spring会扫描类中的注释,这些注释位于“context:component-scan”中定义的包内,如果包中有许多类,则在启动应用程序时需要一段时间,因此建议使用autowire绰号。

答案 1 :(得分:4)

让我回答所有答案

  

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

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

  

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

  1. 是的,不要通过autowire注入bean,而是使用set或get property ,因为 您可以;我使用这个政策。
  2. 避免使用自动扫描组件
  3. 使用 singleton 或bean池或工厂来重用或构建对象
  4.   

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

    1. 使用延迟初始化( @Lazy 注释)
    2. 将非依赖bean 放在XML定义的顶部
    3. 但如果您是JEE开发人员,那么您并不需要这些解决方案。