Как оптимизировать использование Spring Framework для приложений приложений Google App Engine

Google App Engine экземпляры frontend динамически масштабируются. Это означает, что App Engine автоматически создает новые экземпляры при увеличении нагрузки и отключает экземпляры, когда они не используются. Перезагрузка экземпляров может привести к дополнительным задержкам для пользователей. У экземпляров Frontend также есть крайний срок 60 seconds для завершения заданного запроса.

Как я использую Spring MVC and Spring IOC в моем приложении GAE, для оптимизации использования Spring Framework, я прошел через лучшие практики для приложений App Engine.

В этой ссылке меня полностью смущает раздел Сокращение или предотвращение использования автопомощи. Он говорит, что automatic wiring может значительно сократить время, необходимое для разрешения beans во время инициализации приложения, поэтому они предлагают autwire byName вместо использования autwire byType.

Итак, мой вопрос: Как autowire byName сокращает время bean?, А также я хотел бы знать, есть ли лучший способ вставить beans?. Существуют ли лучшие методы для Spring IOC, чтобы сократить время инициализации приложения.

Ответ 1

Позвольте мне ответить на все ответы

Итак, мой вопрос: как autowire byName уменьшает время разрешения bean?

уже описанный apurvc, в частности, если вы используете интерфейс или используете массивное наследование класса Spring, необходимо будет проверить иерархию классов

Я хотел бы знать, есть ли лучший способ вставить beans?

  • Да, не вводите bean с помощью autwire, но используйте set или get property, так как ты можешь; Я использую эту политику.
  • Избегать компонента
  • Используйте пулы singleton или bean или factory для повторного использования или создания объекта

Есть ли какие-либо рекомендации для Spring IOC для сокращения приложений время инициализации.

  • использовать ленивую инициализацию ( @Lazy аннотация)
  • поставить не зависимый bean в верхней части определения XML

Но вам не нужны эти решения, если вы разработчик JEE.

Ответ 2

Autowire "byType", очевидно, должен использовать некоторый механизм (и некоторую обработку) для правильной идентификации bean, тогда как использование "byName" обеспечивает прямую идентификацию.

Проведите аналогию с группой многих пород кошек и собак. Чтобы найти терьера из группы, вам придется сначала определить все породы, однако, когда вы используете имя собак, это намного проще и улучшить идентификацию.

Spring выполняет сканирование классов для аннотаций, которые находятся внутри пакета, определенного в контексте: context-scan, если в пакете много классов, это займет некоторое время во время запуска приложения, поэтому предлагается используйте autowire byName.