Ответ
Основным паттерном для создания бинов в Spring является Factory Method. Контейнер Spring выступает в роли фабрики, которая инстанцирует и управляет объектами (бинами) на основе конфигурации.
Почему Factory Method?
Контейнер не использует оператор new напрямую в клиентском коде. Вместо этого он вызывает фабричные методы (помеченные @Bean или определенные в XML), которые инкапсулируют логику создания объекта.
Пример:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
// Spring вызовет этот фабричный метод
return new MyServiceImpl(dependency());
}
@Bean
public Repository repository() {
return new JdbcRepository(dataSource());
}
}
Другие задействованные паттерны:
- Singleton — область видимости бина по умолчанию. Контейнер возвращает один и тот же экземпляр.
- Prototype — при каждом запросе создается новый экземпляр (задается аннотацией
@Scope("prototype")). - Dependency Injection — паттерн, используемый для внедрения зависимостей, созданных фабрикой, в другие бины.