1、ImportSelector代表返回需要导入的组件全类名的数组:
2、ImportSelector接口中方法String[] selectImports(AnnotationMetadata importingClassMetadata)
返回值就是要导入到容器中的组件全类名
importingClassMetadata参数标识当前标注@Import注解的类的所有注解信息

3、自定义一个ImportSelector接口的实现类:MyImportSelector。
package com.gwolf.config;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportSelector implements ImportSelector {
/** * 返回值就是要导入到容器中的组件全类名
*importingClassMetadata参数标识当前标注@Import注解的类的 所有注解信息
*/
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[] {"com.gwolf.vo.Red"};
}
}

4、在组件注册配置类上加上上述的自定义实现类:
package com.gwolf.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import com.gwolf.vo.Color;
import com.gwolf.vo.Person;
@Configuration
@Conditional(value= {WindowsCondition.class})
@ComponentScanImport(value= {Color.class,MyImportSelector.class})
public class ComponentConfig {
}

5、编写junit测试类,查看我们自定义的类中的组件是不是加入到容器中了。
package com.gwolf.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.gwolf.config.ComponentConfig;
public class ComponentTest {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentConfig.class);
@Test
public void testImport() {
String[] beanNames = applicationContext.getBeanDefinitionNames();
for(String bean : beanNames) {
System.out.println(bean);
}
}
}

6、查看程序的运行结果:Red类已经加入到spring容器中了。
