ta muallif kitobidan iqtiboslar  Spring быстро

Одним из преимуществ внедрения в конструктор является возможность сделать экземпляры неизменяемыми (пометив поля бина как final).
Fikr bildirish
В реальных проектах назначение компонента обычно указывают явно, используя стереотипную аннотацию. Как правило, это @Component. Но в таком случае вы не получаете никакой дополнительной информации об обязанностях реализу­емого объекта, а для разработчиков они часто важны. Две такие обязанности мы рассмотрели в разделе 4.1 — это сервис и репозиторий.
Fikr bildirish
Сервисы — объекты, задачей которых является реализация сценариев использования, а репозитории — объекты, отвечающие за сохранность данных. Поскольку эти обязанности являются типичными для большинства проектов и они очень важны при разработке классов, то разработчику, чтобы хорошо понимать структуру приложения, нужен способ явно их обозначать в проекте.
Fikr bildirish
На практике я стараюсь не опираться на имя параметра, так как эти имена часто меняются при рефакторинге или по ошибке.
Fikr bildirish
1. Идентификатор параметра совпадает с именем одного из бинов, добавленных в контекст (которое, напомню, в свою очередь, идентично имени метода, снабженного аннотацией @Bean и возвращающего значение этого бина). В подобном случае Spring выберет бин с таким же именем, как и у параметра. 2. Идентификатор параметра не совпадает ни с одним из имен бинов, име­ющихся в контексте. Тогда можно поступить следующим образом: • отметить один из бинов как первичный (с помощью аннотации @Primary, как в главе 2). В этом случае Spring выберет для внедрения первичный бин; • выбрать некий бин и отметить его аннотацией @Qualifier, как будет описано далее; • не делать ничего из выше перечисленного — однако в подобном случае приложение завершится ошибкой и выдаст исключение, сообщающее о том, что в контексте есть несколько бинов одного типа и Spring не может выбрать один из них.
Fikr bildirish
Циклической зависимости легко избежать. Достаточно убедиться, что у вас нет объектов, при создании которых возникает взаимная зависимость этих объектов друг от друга. Наличие такой зависимости — пример плохой разработки классов. В этом случае нужно переписать код.
Fikr bildirish
Разработчики используют внедрение зависимостей в сеттерах нечасто. У этого способа больше недостатков, чем преимуществ: код сложнее читать, нельзя пометить поле как final, тестирование не становится проще.
Fikr bildirish
Начиная со Spring 4.3, если класс состоит только из одного конструктора, аннотацию @Autowired можно пропустить.
Fikr bildirish
Spring является модульной конструкцией. Под модульной конструкцией я подразумеваю следующее: если вы используете что-то из экосистемы Spring, то не обязаны подключать к приложению весь Spring целиком, достаточно только нужных вам частей.
Fikr bildirish
Существуют следующие способы включить бин в контекст (далее мы рассмотрим их подробнее): • посредством аннотации @Bean; • посредством стереотипных аннотаций; • программно.
Fikr bildirish