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