Spring4笔记----工厂方法配置bean
来源:互联网 发布:nba全明星赛数据 编辑:程序博客网 时间:2024/04/30 07:33
(1)静态工厂方法
调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不同关心创建对象的细节.
要声明通过静态方法创建的 Bean, 需要在Bean 的class 属性里指定拥有该工厂的方法的类,同时在 factory-method属性里指定工厂方法的名称.最后, 使用 <constrctor-arg>元素为该方法传递方法参数
import java.util.HashMap;import java.util.Map;//静态工厂方法,直接调用某一个类的静态方法就可以返回Bean的实例public class StaticCarFactory{ private static Map<String,Car> cars = new HashMap<String,Car>(); static { cars.put("audi",new Car("audi",300000.0)); cars.put("ford",new Car("ford",300000.0)); } //静态工厂方法 public static Car getCar(String name) { return cars.get(name); }}
(2)实例工厂方法
实例工厂方法: 将对象的创建过程封装到另外一个对象实例的方法里. 当客户端需要请求对象时, 只需要简单的调用该实例方法而不需要关心对象的创建细节.
要声明通过实例工厂方法创建的 Bean
在 bean 的 factory-bean 属性里指定拥有该工厂方法的 Bean
在 factory-method 属性里指定该工厂方法的名称
使用 construtor-arg 元素为工厂方法传递方法参数
import java.util.HashMap;import java.util.Map;public class InsTanceCarFactory{private Map<String,Car> cars = null;public InsTanceCarFactory(){cars = new HashMap<String,Car>();cars.put("audi",new Car("audi",300000.0));cars.put("ford",new Car("ford",300000.0));} public Car getCar(String name) { return cars.get(name); }}配置文件
<!-- 通过静态工厂方法来配置bean,不是配置静态工厂方法实例,而是配置bean实例 --><!-- factory-method指向静态工厂的方法名 --><!-- constructor-arg:如果工厂方法需要传入参数,则用constructor-arg传入参数 --><bean id="car1" class="com.bean.factory.StaticCarFactory" factory-method="getCar"><constructor-arg value="audi"></constructor-arg></bean> <!-- 配置工厂的实例 --> <bean id="carFactory" class="com.bean.factory.InsTanceCarFactory"></bean> <!-- 通过实例方法来配置bean --> <!-- factory-method指向实例工厂的方法名 --> <!-- constructor-arg:如果工厂方法需要传入参数,则用constructor-arg传入参数 --> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="ford"></constructor-arg> </bean></beans>测试
public class Main{public static void main(String[] args){ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("factory.xml");Car car1 = context.getBean("car1",Car.class);System.out.println(car1);Car car2 = context.getBean("car2",Car.class);System.out.println(car2);}}
0 0
- Spring4笔记----工厂方法配置bean
- Spring4学习笔记-通过注解配置bean
- Spring4笔记----实现 FactoryBean 接口配置 Bean
- Spring4笔记----Bean 的生命周期方法
- Spring4从入门到精通---工厂方法创建bean
- spring学习笔记九 通过工厂方法配置bean
- spring 工厂方法配置bean
- Spring4-2 Bean配置
- Spring4笔记----使用外部属性文件配置 bean
- Spring4深入理解IOC&DI04----Bean配置方式(全类名,工厂方法,FactoryBean),配置形式(基于XML和注解),泛型依赖注入
- spring 通过工厂方法配置Bean
- 9.Spring_通过工厂方法配置Bean
- Spring-10:通过工厂方法配置Bean
- spring中通过工厂方法配置Bean
- Spring_11_通过工厂方法配置 Bean
- Spring通过工厂方法配置Bean
- 二、通过工厂方法来配置bean
- 【Spring】使用工厂方法配置Bean
- 面试题57:删除链表中的重复节点
- 移动端设计规范
- 32位保护模式学习小结(1)
- poj2251 Dungeon Master 简单BFS
- 2116数据结构实验之链表一:顺序建立链表
- Spring4笔记----工厂方法配置bean
- C# Matlab 相互调用
- Git 进阶 —— 远程仓库
- 1091. Acute Stroke (30)
- java语言基础入门——字符串两种建立方式的比较
- HDU 4864 Task
- Faster R-CNN系列之PYTHON篇
- 基本数据类型的包装类
- 不带表头的单向链表,带表头的单向链表,带表头的单向循环链表,带表头的双向循环链表。