一、导入普通类
public class JuMao {
private String sex="男";
private Integer age=18;
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "[sex:"+sex+",age:"+age+"]";
}
}
@Import(JuMao.class)
@Configuration
public class ImportConfig {
}
二、导入一个配置类
@Configuration
public class JuMaoConfig {
@Bean
JuMao juMao() {
return new JuMao();
}
}
@Import(JuMaoConfig.class)
@Configuration
public class ImportConfig {
}
三、导入ImportSelector接口类
public class JuMaoImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[] {"excins.experimental.JuMao"};
}
}
@Import(JuMaoImportSelector.class)
@Configuration
public class ImportConfig {
}
四、导入ImportBeanDefinitionRegistrar接口类
public class JuMaoRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(JuMao.class);
builder.setScope(BeanDefinition.SCOPE_SINGLETON);
builder.addPropertyValue("sex", "男");
builder.addPropertyValue("age", "18");
registry.registerBeanDefinition("juMao", builder.getBeanDefinition());
}
}
@Import(JuMaoRegistrar.class)
@Configuration
public class ImportConfig {
}
五、看着眼熟的用法
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(JuMaoRegistrar.class)
public @interface EnableJuMao {
}
@EnableJuMao
@Configuration
public class ImportConfig {
}
测试类
public class ImportTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(ImportConfig.class);
Object bean = context.getBean(JuMao.class);
System.out.println(bean);
context.close();
}
}