JAVA全系列 教程
3762个小节阅读:7088.3k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Spring会帮助我们创建bean,那么它底层是调用什么方法进行创建的呢?
Spring默认使用类的空参构造方法创建bean:
xxxxxxxxxx
// 假如类没有空参构造方法,将无法完成bean的创建
public class StudentDaoImpl implements StudentDao{
public StudentDaoImpl(int a){}
@Override
public Student findById(int id) {
// 模拟根据id查询学生
return new Student(1,"百战程序员","北京");
}
}
Spring可以调用工厂类的方法创建bean:
创建工厂类,工厂类提供创建对象的方法:
xxxxxxxxxx
public class StudentDaoFactory {
public StudentDao getStudentDao(){
return new StudentDaoImpl(1);
}
}
在配置文件中配置创建bean的方式为工厂方式。
xxxxxxxxxx
<!-- id:工厂对象的id,class:工厂类 -->
<bean id="studentDaoFactory" class="com.itbaizhan.dao.StudentDaoFactory"></bean>
<!-- id:bean对象的id,factory-bean:工厂对象的id,factory-method:工厂方法 -->
<bean id="studentDao" factory-bean="studentDaoFactory" factory-method="getStudentDao"></bean>
测试
Spring可以调用工厂类的静态方法创建bean:
创建工厂类,工厂提供创建对象的静态方法。
xxxxxxxxxx
public class StudentDaoFactory2 {
public static StudentDao getStudentDao2() {
return new StudentDaoImpl();
}
}
在配置文件中配置创建bean的方式为工厂静态方法。
xxxxxxxxxx
<!-- id:bean的id class:工厂全类名 factory-method:工厂静态方法 -->
<bean id="studentDao" class="com.itbaizhan.dao.StudentDaoFactory2" factory-method="getStudentDao2"></bean>
测试
1. Spring不能使用创建bean对象
A 静态工厂方法
B 工厂方法
C 空参构造方法
D 有参构造方法
2. Spring调用工厂类的普通方法创建bean需要配置
A 工厂对象和被创建的对象
B 工厂对象
C 被创建的对象
D 以上都可以
1=>C 2=>A