Ответ
Аннотация @Import в Spring Framework используется для импорта конфигураций из других классов в текущий контекст приложения. Это ключевой инструмент для модульности и композиции конфигураций.
Основное назначение: Объединить несколько конфигурационных классов (@Configuration) или компонентов в один главный контекст.
Пример:
@Configuration
public class DatabaseConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
@Configuration
public class SecurityConfig {
// ... бины безопасности
}
@Configuration
@Import({DatabaseConfig.class, SecurityConfig.class}) // Импорт конфигураций
public class AppConfig {
// Основная конфигурация приложения
}
Теперь при создании контекста на основе AppConfig будут зарегистрированы все бины из DatabaseConfig и SecurityConfig.
Ключевые возможности @Import:
- Импорт обычных
@Configurationклассов. - Импорт классов, помеченных
@Component(например,@Service,@Repository), начиная с Spring 4.2. - Импорт классов, реализующих интерфейс
ImportSelectorилиImportBeanDefinitionRegistrarдля продвинутой динамической конфигурации. - Часто используется в составе аннотаций Spring Boot (например,
@SpringBootApplicationнеявно использует@Importчерез@EnableAutoConfiguration).
Альтернатива: Для импорта XML-конфигураций используйте аннотацию @ImportResource.