1、直接填class数组
(1)实体类
public class Cat {
private int id;
private String name;
}
public class Dog {
private int id;
private String name;
}
(2)配置类
import com.it.huaxin.vo.Cat;
import com.it.huaxin.vo.Dog;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Import({Cat.class, Dog.class})
@Configuration
public class PersonConfig {
}
(3)测试类
import com.it.huaxin.config.PersonConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Arrays;
public class PersonTest {
public static void main(String [] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PersonConfig.class);
String[] beanDefinitionNames = context.getBeanDefinitionNames();
Arrays.stream(beanDefinitionNames).forEach(obj -> System.out.println(obj));
}
}
2、ImportSelector方式
(1)实体类
public class Person {
private int id;
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
(2)实现ImportSelector的类
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
public class PersonImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[] {"com.it.huaxin.vo.Person"};
}
}
(3)配置类
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Import({PersonImportSelector.class})
@Configuration
public class PersonConfig {
}
(4)测试类
import com.it.huaxin.config.PersonConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Arrays;
public class PersonTest {
public static void main(String [] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PersonConfig.class);
String[] beanDefinitionNames = context.getBeanDefinitionNames();
Arrays.stream(beanDefinitionNames).forEach(obj -> System.out.println(obj));
}
}
测试结果:
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
personConfig
com.it.huaxin.vo.Person
3、ImportBeanDefinitionRegistrar方式
(1)实体类
public class Person { private int id; private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } }
(2)实现ImportBeanDefinitionRegistrar接口的类
import com.it.huaxin.vo.Person; 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 PersonImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Person.class); registry.registerBeanDefinition("person", rootBeanDefinition); } }
(3)配置类
import com.it.huaxin.registrar.PersonImportBeanDefinitionRegistrar; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Import({PersonImportBeanDefinitionRegistrar.class}) @Configuration public class PersonConfig { }
(4)测试类
import com.it.huaxin.config.PersonConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.Arrays; public class PersonTest { public static void main(String [] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PersonConfig.class); String[] beanDefinitionNames = context.getBeanDefinitionNames(); Arrays.stream(beanDefinitionNames).forEach(obj -> System.out.println(obj)); } }
//运行结果
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
personConfig
person