一.Bean的四种创建方式
1.1 普通的方式
实例化一个有公共无参构造的方法,要求有无参构造函数。
//自己写的对象:Dao,Service,Action都使用这种方法
<bean id="myBean" class="cn.itsource.spring.day2.d_prop.MyBean"/>
1.2 FactoryBean方式
- 一个类实现了FactoryBean接口
- 执行getObject方式,返回的值也会变成一个Bean
准备一个FactoryBean
/**
* 一个类实现FactoryBean接口,那么它就是一个FactoryBean
* 泛型就是它要操作的那个类型
*/
public class EntityManagerFactoryBean implements FactoryBean<EntityManagerFactory> {
//这个方法返回什么对象,我们拿到的bean就是什么对象
@Override
public EntityManagerFactory getObject() throws Exception {
return Persistence.createEntityManagerFactory();
}
//返回的对象类型
@Override
public Class<?> getObjectType() {
return EntityManagerFactory.class;
}
//这个对象是否是单例的
@Override
public boolean isSingleton() {
return true;
}
}
1.3 静态工厂
- 工厂中有一个静态方法
- 直接拿到这个方法中返回的对象(bean)
准备一个静态工厂
public class DaoFactory {
//在这个工厂中有一个静态方法
public static MyDao createMyDao(){
return new MyDao();
}
}
配置这个工厂对应的方法
<bean id="myDao" class="cn.itsource._10_bean.DaoFactory"
factory-method="createMyDao"></bean>
1.4 实例工厂
- 工厂中有个方法
- 直接拿到这个方法中返回的对象(bean)
准备一个静态工厂
public class DaoFactory {
public MyDao createMyDao(){
return new MyDao();
}
}
配置这个工厂对应的方法
<!--工厂的一个方法(非静态)-->
<bean id="daoFactory" class="cn.itsource._10_bean.DaoFactory" />
<bean id="myDao" factory-bean="daoFactory" factory-method="createMyDao" />