@Import({Person.class,Dog.class}):自动给容器中注入这两个组件,这两个组件在容器中的name=包名.类名
注意:@Import这个标签只能在组件上使用,例如在@Configuration或者@control或者@service标注的类上使用
例如:@Configuration标注的类上是专门往容器中注册组件的,
1.@Bean标注的方法上,返回值就是往容器注册的组件对象,组件的name为方法名称(getperson/getDog)
2.@Import({注册的组件列表}):注册的组件的name为:包名.类名
样例代码:
@Import({Person.class,Dog.class})
@Configuration
public class MyConfiguration {
@Bean
public Person getperson(){
return new Person("吴孟达",18);
}
@Bean
public Dog getDog(){
return new Dog("刘丹",19);
}
}
测试代码:
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
System.out.println("启动springboot项目...");
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
System.out.println("启动成功!");
//根据类型获取容器中组件的name值列表
String[] beanNamesForType = run.getBeanNamesForType(Person.class);
for (String s : beanNamesForType) {
System.out.println("id:"+s);
}
}
}
输出:
id:cn.com.entity.Person(@import标签注入的组件name值)
id:getperson(@Configuration标签和@Bean标签注入组件的name值是:@Bean标注的方法名称)