Ответ
Аннотации — это современный и наиболее распространенный способ конфигурации в Spring. Они позволяют объявлять бины и их зависимости прямо в Java-коде.
Основные аннотации для объявления бинов:
| Аннотация | Назначение |
|---|---|
@Component |
Универсальный стереотип для любого бина, управляемого Spring. |
@Service |
Специализация @Component для бинов бизнес-логики (сервисного слоя). |
@Repository |
Специализация @Component для бинов доступа к данным (DAO). Добавляет трансляцию исключений. |
@Controller / @RestController |
Для бинов веб-слоя (MVC или REST API). |
@Configuration |
Помечает класс как источник конфигурации, содержащий методы @Bean. |
@Bean |
В методе внутри @Configuration-класса — определяет бин для возвращаемого объекта. |
Аннотации для внедрения зависимостей и конфигурации:
@Autowired— автоматическое связывание (by type).@Qualifier— уточнение имени бина при внедрении.@Value— инъекция значений из properties-файлов.@Scope— определение области видимости (singleton, prototype и др.).@PostConstruct,@PreDestroy— методы жизненного цикла.
Пример сервиса с аннотациями:
@Service // Объявляет этот класс как Spring-бин
@Scope("prototype") // Создаёт новый экземпляр при каждом запросе
public class UserService {
@Value("${app.default.role}") // Инъекция значения из application.properties
private String defaultRole;
@Autowired // Автоматическое внедрение зависимости
private UserRepository userRepository;
@PostConstruct // Метод выполнится после инициализации бина
public void init() {
System.out.println("UserService initialized with role: " + defaultRole);
}
}
Преимущества: лаконичность, проверка типов на этапе компиляции, тесная связь с кодом.