#java #spring
Я имею в виду основную функциональность. Я, в общем-то, понял концепцию IoC и DI. Но какие это действительно дает преимущества? Только ли возможность с легкостью сменить одну реализацию класса на другую и не писать везде new? Нигде не нашел прямо прозрачного примера достоинств Spring-а, везде с первого абзаца про общий принцип IoC.
Ответы
Ответ 1
Основное преимущество Spring'а - возможность разработки приложения как набора слабосвязанных (loose-coupled) компонентов. Чем меньше компоненты приложения знают друг о друге, тем проще разрабатывать новый и поддерживать существующий функционал приложения. Классический пример - управление транзакциями. Spring позволяет вам управлять транзакциями совершенно независимо от основной логики взаимодействия с БД. Изменение этой логики не порушит транзакционность, равно как изменение логики управления транзакциями не сломает логику программы*. Spring поощряет модульность. Компоненты можно добавлять и удалять (почти) независимо друг от друга. В принципе, приложение можно разработать таким образом, что оно даже не будет знать, что управляется Spring'ом*. Также Spring заметно упрощает модульное тестирование (unit-testing): в компонент, разработанный для работы в IoC контейнере очень легко инжектировать фейковые зависимости и проверить работу только этого компонента. Ну, и в качестве приятного дополнения, Spring сильно облегчает инициализацию и настройку компонентов приложения, позволяя гибко настраивать приложение без существенных изменений Java-кода*. Ещё раз, кратко: Поощрение слабой связанности компонентов, и, как следствие... ... упрощение инициализации и настройки компонентов, ... упрощение модульного тестирования, ... упрощение разработки и поддержки приложения в целом. * Читая эти предложения, делайте скидку на уровень профессионализма программистов, использующих фреймворк. Всегда можно что-нибудь сломать или неоптимально организовать, но в умелых руках Spring весьма эффективен.
Комментариев нет:
Отправить комментарий