На что нужно обратить внимание (подводные камни) при использовании контейнера IOC?
На что нужно обратить внимание (подводные камни) при использовании контейнера IOC?
5 ответов
Попытка не слишком сильно упасть для шаблона Service Locator, где некоторая статическая оболочка для вашего контейнера IoC предоставляет вам экземпляры типа xyz. Хотя иногда это может понадобиться, гарантируя, что вы действительно внедрите свои зависимости в тип потребления, вы сделаете свой код намного чище и сделаете контейнер намного менее навязчивым.
Утилизация правильных вещей в нужное время, иначе вы создадите утечки памяти.
Если вы используете Spring Aop, происходит много магии, и если что-то не работает, очень трудно понять, что не так.
Поиск неисправностей может быть сложнее в моем опыте. Вы работаете не только с интерфейсами, а это означает, что может быть трудно определить фактический тип используемых экземпляров, глядя на код. Вы также перемещаете большую часть проводки от времени компиляции до времени выполнения (что, конечно, является одним из пунктов IoC, но это не творит чудеса при поиске проблем).
Сложность конфигурации.
Не забывайте заранее, что сложность, которую вы получаете с различными XML-файлами и настройками, стоит той проблемы, которую вы решаете. Один из примеров - в Apache HiveMind конфигурация привязки экземпляров классов друг к другу и передача информации о конфигурации может легко усложниться в обслуживании, чтении и понимании, чем требовалась бы эквивалентная Java.