【spring】第五课工厂
程序员文章站
2024-03-18 18:38:22
...
实例化的三种方法
-
默认构造
<bean id="" class=""> 必须提供默认构造
-
静态工厂
- 常用与spring整合其他框架(工具)
- 静态工厂:用于生成实例对象,所有的方法必须是static
<bean id="" class="工厂全限定类名" factory-method="静态方法">
静态工厂实例:
Java类
public interface UserService {
public void addUser();
}
public class UserServiceTmpl implements UserService{
@Override
public void addUser() {
System.out.println("b_factory add user");
}
}
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>
-
实例工厂(接口类和接口实现类同上)
Java类
/**
* 实例工厂,所有方法非静态
*
*/
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>
理解:静态工厂 ≈ 从一家工厂拿货;
实例工厂 ≈ 从多家工厂拿货(标明哪家【factory-bean】工厂拿哪些【factory-method】货即可)
上一篇: 绑定CAD实体到AS单元