Является ли Spring @Autowired огромной проблемой производительности?

У меня есть проект, в котором ... я не знаю ... 200-300 daos / services / controllers, и я использую @Autowired, чтобы связать все вместе, а не указывать все в applicationContext.xml.

У меня вопрос, насколько это влияет на производительность на время запуска? Стоит ли удалить все @Autowired аннотации и подключить это приложение вручную через applicationContext.xml?

С архитектурной точки зрения мне нравится @Autowired. Я не хочу добавлять еще один уровень сложности с помощью файла xml - для меня это не добавляет ценности. Но если такие вещи добавляют 10 секунд ко времени загрузки моего контейнера, я могу это рассмотреть. Если стоимость 100 миллисекунд, то оставлю как есть.

Спасибо


person egervari    schedule 23.11.2011    source источник


Ответы (2)


Практически то же самое. Сканирование компонентов немного дороже (когда вы сканируете @Service, @Component), но, как вы сказали, это время запуска - это происходит только один раз. А на умеренной машине запускается довольно быстро даже с аннотациями.

Как правило, я бы не отказался от этого подхода только потому, что он добавляет немного времени на запуск. И я могу заверить вас, что в этом нет ничего значительного (работа над большим проектом, чем ваш прямо сейчас)

person Bozho    schedule 23.11.2011
comment
Спасибо. Затем мне нужно будет найти способ сократить время запуска в других местах. Я часто запускаю / останавливаю сервер, когда меняю действия контроллера и тестирую ajax. Я просто хочу найти способы сократить время запуска. Я понимаю, что для производства это не проблема, но для разработки это время запуска действительно серьезно. - person egervari; 24.11.2011
comment
Я не думаю, что в этом действительно можно помочь. Я по-прежнему провожу много тестов приложений и довольно часто меняю аннотации, поэтому горячая замена мне не подходит. - person egervari; 24.11.2011
comment
Это неверно даже для производства. Особенно с такими вещами, как appengine. Время запуска чрезвычайно важно. - person Rafael Sanches; 13.07.2013
comment
Это тоже хит тестирования. - person allprog; 05.08.2013

Есть интересный комментарий от @Masterhard в Использование Spring @Autowired:

Мы переключаемся с @Autowire обратно на конфигурацию XML в нашем большом проекте. Проблема в очень низкой производительности начальной загрузки. Сканер Autowiring загружает все классы из пути к классам поиска autowiring, поэтому во время инициализации Spring загружается множество классов.

Также см., Например, SPR-6870.

Тем не мение! Автосоединение с использованием аннотаций настолько удобно, что я дважды подумал бы, прежде чем вернуться к XML. Если время запуска действительно не является проблемой для вашего проекта и вы не можете доказать, что это вызвано сканированием CLASSPATH, оставайтесь с аннотациями. Также помните, что Java EE также перемещается в сторону аннотаций.

P.S .: Разбор тысяч строк XML также приводит к некоторым накладным расходам.

person Tomasz Nurkiewicz    schedule 23.11.2011
comment
обратите внимание, что есть разница между автоматическим подключением с аннотациями и сканированием компонентов. Вы можете отключить сканирование компонентов и по-прежнему использовать @Autowired. - person Bozho; 24.11.2011