Какие знаешь способы создания Bean

«Какие знаешь способы создания Bean» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Spring есть несколько основных способов создания бинов:

  1. Через аннотацию @Component (и её производные @Service, @Repository, @Controller):
@Service
public class UserService {
    // ...
}
  1. Через @Bean в конфигурационном классе:
@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource();
    }
}
  1. Через XML-конфигурацию (устаревший способ):
<bean id="userService" class="com.example.UserService"/>
  1. Программно через BeanDefinitionRegistry (редко используется):
GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
beanDefinition.setBeanClass(UserService.class);
context.registerBeanDefinition("userService", beanDefinition);

Бины создаются при старте контекста и управляются Spring IoC-контейнером. По умолчанию создаются как синглтоны.