import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
/**
* AnnotationMetadata:当前类的组成信息
* BeanDefinitionRegistry :BeanDefinition的注册类
* 把所有需要添加到容器中的bean,
* 调用BeanDefinitionRegistry#registerBeanDefinition手动注册进来
*/
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
// TODO Auto-generated method stub
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(RainBow.class);
registry.registerBeanDefinition("rainBow", rootBeanDefinition);
}
}
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import com.ceshi.bean.Color;
import com.ceshi.bean.MyImportSeletor;
import com.ceshi.bean.PersonBean;
import com.ceshi.demo.MyFilterType;
//配置类==配置文件(xml)
@Configuration //告诉Spring这个一个配制类
/**
* @import[快速给容器导入组件]
* 1】、@Import({Color.class}) :导入容器中的组件,容器中默认就会自动注册这个组件,id默认为类的全类名
* 2】、ImportSelector : 返回需要导入的组件的全类名数组
* 3]、ImportBeanDefinitionRegistrar:手动注册bean到容器中
*/
@Import({Color.class,MyImportSeletor.class})
public class BeanConfig4 {
@Bean("person")
public PersonBean personBean2(){
return new PersonBean("lishi","20");
}
}