Ранее я использовал аннотации Spring MVC и hibernate в своем проекте веб-приложений Google. Запуск приложения после развертывания занимает некоторое время.Аннотации Spring MVC с производительностью XML
По этой причине я перехожу к подходу Spring MVC на основе XML только для контроллера. Однако для классов обслуживания и DAO @Service
и @Repository
аннотации остаются такими, как есть.
В моей Spring XML я делаю, как, как показано ниже (нет боба тегов определен для обслуживания и DAO классов):
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<bean class="com.my.controller.UserController">
<property name="domainManager" ref="domainManager"/>
<property name="userProfileDao" ref="userProfileDao"/>
</bean>
Внутри UserController
, я не использую любую @autowired
аннотацию. Я использую комбинацию аннотаций с XML. Существуют ли какие-либо недостатки такого подхода? Неужели я ошибаюсь?
Вы можете смешать ароматы Spring DI просто отлично, и люди делают это все время. Я не знаю, как это ускорит время запуска приложения, и почему бы ни было заботиться о том, как долго приложение запускается, но опять же я не знаю ваших требований. Просто FYI, Spring Apps, как правило, страдают от более медленного запуска, потому что весь «тяжелый подъем» DI, который возникает при запуске, что обычно означает, что многие классы Singleton получают встроенный фронт. Но первоначальная стоимость обычно означает меньше времени на выполнение GC и строительных объектов позже. – CodeChimp
Для проекта приложения Google каждый запрос должен быть завершен в течение 30 секунд или 1 м. Я не эксперт в Spring mvc. Согласно моим наблюдениям, использующим аннотации после развертывания, для запуска приложения требуется много времени, так как все зависимости должны быть установлены и конфигурированы в первом запросе. но для зависимостей на основе xml, установленных во время компиляции. пожалуйста, поправьте меня, если мое понимание ошибочно.? – RBP
Это совершенно неправда.Независимо от того, используете ли вы на основе аннотаций или на основе XML, DI происходит при запуске, если вы не помечаете свои бобы как прототипы, и в этом случае они создаются по каждому запросу. XML вообще ничего не делает во время компиляции, так что снова мне любопытно, почему вы воспринимаете увеличение скорости при запуске при использовании XML над аннотациями. Если вы не сообщите Spring сканировать ВСЕ пакеты для аннотированных классов, но тогда вы неправильно используете Spring в этот момент. Кроме того, этот 30-секундный срок, это по запросу или для приложения, которое находится в состоянии «готовности» (запуск)? – CodeChimp