Ответ
Методы, аннотированные @Bean, реализуются в классах конфигурации Spring, которые помечены аннотацией @Configuration.
Назначение: Эти методы определяют логику создания и настройки экземпляров объектов (бинов), которые затем управляются Spring IoC-контейнером.
Пример конфигурационного класса:
@Configuration // Указывает, что класс содержит конфигурацию бинов
public class AppConfig {
// Метод создает бин типа DataSource
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl("jdbc:h2:mem:testdb");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
// Метод создает бин типа JdbcTemplate, зависящий от бина dataSource
// Spring автоматически внедрит зависимость (DataSource) в параметр метода
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
Ключевые моменты:
@Configurationсообщает Spring, что нужно обработать класс и вызвать его@Bean-методы для построения контекста.@Beanуказывает, что метод возвращает объект, который должен быть зарегистрирован как бин в контексте приложения.- Внедрение зависимостей работает через параметры метода. Spring автоматически найдет и передаст требуемый бин (как в примере с
jdbcTemplate(DataSource dataSource)). - По умолчанию имя бина совпадает с именем метода (
dataSource,jdbcTemplate), но его можно задать явно:@Bean(name = "myDataSource").