@Import注释的用例是什么?
根据官方文件:
注释类型配置
指示类声明一个或多个@Bean方法,并且可以由Spring容器处理以生成bean定义...
@Configuration类可以使用@Import注释进行组合,这与Spring XML中的工作方式没有什么不同。因为@Configuration对象在容器中作为 Spring Bean 进行管理。
但我也可以使用@Configuration注释而不@Import。我已经测试了下面列出的代码,它按预期工作。那么使用@Import的目的是什么呢?
调度程序服务器初始化程序
public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { WebConfig.class };
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
    
 }
WebMvcConfigurerAdapter
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "package.name" })
// @Import(OptionalConfig.class) 
public class WebConfig extends WebMvcConfigurerAdapter {
    // ...
}
可选配置
@Configuration
public class OptionalConfig {
    
    @Bean(name = "myClass")
    public MyClass myClass() {
        return new MyClass();
    }
}
服务
@Service
public class MyServiceImpl implements MyService {
    
    @Autowired
    private MyClass myClass;    // yes, it works
    // ...
}
 
					 
				 
				    		 
				    		 
				    		 
				    		