@Import(bean.class)的作用主要是讲外部的jar导入到spring Ioc的容器中,
与@Bean的作用相同
与@Bean的区别:
@Bean注解 注入的对象的id就是方法的名称,而@Import(bean.class)注解 注入对象的Id是当前类的全类名,而且@Import可以同时注入多个对象 @Import(bean1.class,bwan2.class,…) 。
例如:
代码1
@Bean
public Win10Entity win10Entity(){
return new Win10Entity();
}
代码1中通过@Bean注入到对象在spring Ioc容器中的名称为win10Entity
代码2
package com.mmm.v2;
public class Win7Entity {
}
@Configuration
@Import(Win7Entity.class)
public class MyConfig {
// @Bean
// @Conditional(MyCondition.class)
// public Win7Entity win7Entity(){
// return new Win7Entity();
// }
}
代码2中通过@Import(Win7Entity.class)注入到spring Ioc容器中的对象的名称为com.mmm.v2.Win7Entity
可用下面代码来测试
一个实体对象类
@Configuration
@Import(Win10Entity.class)
public class MyConfig {
@Bean
//@Conditional(MyCondition.class)
public Win7Entity win7Entity(){
return new Win7Entity();
}
}
一个有main函数的类
public class TestC {
public static void main(String[] args) {
AnnotationConfigApplicationContext annotation = new AnnotationConfigApplicationContext(MyConfig.class);
// Win7Entity win7Entity =(Win7Entity) annotation.getBean("com.mayikt.v2.Win7Entity");
// Win7Entity win7Entity = annotation.getBean(Win7Entity.class);
// System.out.println(win7Entity+"qqqq");
//此方法是获取注入spring Ioc容器中的对象名的方法
String [] beanDefinitionNames= annotation.getBeanDefinitionNames();
for (int i=0;i<beanDefinitionNames.length;i++){
System.out.println(beanDefinitionNames[i]);
}
}
打印的结果
com.mmm.v2.Win10Entity
win7Entity