实例化方式
- 3种bean实例化方式:默认构造、静态工厂、实例工厂
默认构造
<bean id="" class=""> 必须提供默认构造 |
静态工厂
- 常用与spring整合其他框架(工具)
- 静态工厂:用于生成实例对象,所有的方法必须是static
<bean id="" class="工厂全限定类名" factory-method="静态方法"> |
工厂
public class MyBeanFactory {
/** * 创建实例 * @return【 */ public static UserService createService(){ return new UserServiceImpl(); } } |
spring配置
<!-- 将静态工厂创建的实例交予spring class 确定静态工厂全限定类名 factory-method 确定静态方法名 --> <bean id="userServiceId" class="com.itheima.c_inject.b_static_factory.MyBeanFactory" factory-method="createService"></bean> |
实例工厂
- 实例工厂:必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的。
工厂
/** * 实例工厂,所有方法非静态 * */ public class MyBeanFactory {
/** * 创建实例 * @return */ public UserService createService(){ return new UserServiceImpl(); }
} |
spring配置
<!-- 创建工厂实例 --> <bean id="myBeanFactoryId" class="com.itheima.c_inject.c_factory.MyBeanFactory"></bean> <!-- 获得userservice * factory-bean 确定工厂实例 * factory-method 确定普通方法 --> <bean id="userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>
|