Как настроить Spring bean с помощью Java-конфигурации?

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

Ответ

Java-конфигурация в Spring — это типобезопасная альтернатива XML, использующая аннотации @Configuration и @Bean.

Базовый пример:

@Configuration // Указывает, что класс содержит конфигурацию бинов
public class AppConfig {

    @Bean // Результат метода регистрируется как bean в Spring Context
    public MyService myService() {
        return new MyServiceImpl();
    }

    @Bean
    public DataSource dataSource() {
        return new DriverManagerDataSource("jdbc:h2:mem:testdb", "sa", "");
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) { // Внедрение зависимости
        return new JdbcTemplate(dataSource);
    }
}

Ключевые преимущества перед XML:

  • Типобезопасность и рефакторинг: Ошибки конфигурации обнаруживаются на этапе компиляции.
  • Гибкость: Можно использовать любую Java-логику при создании бина.
  • Условная конфигурация: Аннотации @Profile, @ConditionalOnProperty и другие.

Импорт конфигураций:

@Configuration
@Import({DatabaseConfig.class, SecurityConfig.class}) // Импорт других @Configuration классов
@ComponentScan("com.example.services") // Сканирование пакетов на наличие @Component
public class MainConfig {
}