2013-11-23 2 views
11

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

Как я использую Spring MVC and Spring IOC в приложении GAE, чтобы оптимизировать использование Spring Framework, я прошел через Best Practices for App Engine Applications.

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

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

+2

Вы можете игнорировать сканирование компонентов Spring (и автоподготовку) и определить все компоненты и их зависимости. Таким образом, не будет времени, необходимого для разрешения зависимостей, и я думаю, что использование Java Config легче поддерживать, чем конфигурацию XML. –

ответ

4

Позвольте мне дать ответ на все вопросы

Так что мой вопрос Как autowire Byname уменьшает боб время разрешения ??

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

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

  1. Да, не вводят фасоль по autowire но установить использовать или получить свойство как вы можете; Я использую эту политику.
  2. Избегайте AutoScan компонент
  3. Использование одноточечно или боб бассейны или завод для повторного использования или построить объект

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

  1. использование ленивая инициализация (@Lazy аннотацию)
  2. ставить не зависимый компонент в верхней определения XML

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

7

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

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

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

+0

Спасибо за ваше объяснение. Это полезно, не могли бы вы также объяснить мне, есть ли какие-либо лучшие методы для Spring IOC для сокращения времени инициализации приложений, особенно я смотрю в терминах GAE. Благодарю. Я поддержал ваш ответ, поскольку он полезен :). – Jayasagar

+0

У меня нет большой идеи GAE, для Spring вы можете сузить сканирование компонентов, используя фильтры include/exclude. В этом блоге много весенних лучших практик. Http://gordondickens.com/wordpress/2012/07/30/enterprise-spring-framework-best-practices-part-3-xml-config/ – apurvc

+0

Согласно GAE docs, исключить, делает не очень помогает. –

Смежные вопросы