主页提供本案例完整代码免费下载
使用步骤:
1.定义一个导入器类并实现ImportSelect接口,重写方法。
2.在配置类上使用@Import(导入器类名.Class),导入该自定义导入器
详解:
自定义导入器(需要实现importSelect接口)
bean只有通过配置才可以进入spring容器,被spring加载并控制
配置bean的方式如下:
-
XML文件中使用标签配置
-
使用 @Component及衍生注解配置
-
企业开发过程中,通常需要配置大量的bean,需要一种快速高效配置大量bean的方式
-
没有使用注解创建Bean并放入IOC容器,使用自定义导入器方式创建Bean并放入IOC容器
import com.it.dao.BookDao;
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao running...");
}
}
- 定义一个导入器实现ImportSelector接口— 编程形式加载一个类
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
import java.util.ResourceBundle;
//实现ImportSelector接口,并重写方法
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
//1.编程形式加载一个类
return new String[]{"com.itheima.dao.impl.BookDaoImpl"};
}
}
新建properties配置文件--import.properties
#2.加载import.properties文件中的单个类名
#className=com.it.dao.impl.BookDaoImpl
#3.加载import.properties文件中的多个类名
#className=com.it.dao.impl.BookDaoImpl,com.itheima.dao.impl.AccountDaoImpl
#使用通配符加载com.it.dao.impl包下所有类
path=com.it.dao.impl.*
---------------------------------------------------------------------
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
// 1.编程形式加载一个类
// return new String[]{"com.itheima.dao.impl.BookDaoImpl"};
// 2.加载import.properties文件中的单个类名
// ResourceBundle bundle = ResourceBundle.getBundle("import");
// String className = bundle.getString("className");
// 3.加载import.properties文件中的多个类名
ResourceBundle bundle = ResourceBundle.getBundle("import");
String className = bundle.getString("className");
return className.split(",");
}
}
@Configuration
@ComponentScan("com.it")
//3.自定义导入器
@Import(MyImportSelector.class)
public class SpringConfig {
}