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