Spring-10:通过工厂方法配置Bean
2016-07-20 15:31
579 查看
本文介绍在Spring框架中通过工厂方法配置bean的两种方式:通过调用静态工厂方法创建Bean以及通过调用实例的工厂方法创建Bean。
首先准备一个Car类,该类有String brand 和 double price 两个属性,并定义get和set以及构造方法。
要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称。 最后, 使用 <constrctor-arg>
元素为该工厂方法传递参数。
示例如下:
创建拥有静态工厂方法的类:
这个 getCar 静态方法可以根据brand属性返回对应的实例。
在xml文件中配置如下:
要声明通过实例工厂方法创建的 Bean,有三步:
0、配置拥有工厂方法的Bean
1、在 bean 的 factory-bean 属性里指定拥有该工厂方法的 Bean
2、在 factory-method 属性里指定该工厂方法的名称
3、使用 construtor-arg 元素为工厂方法传递方法参数
创建拥有工厂方法的类:
在xml文件中分别配置工厂Bean和Car Bean:
这里car2的class属性指向Car,需要额外配置factory-bean属性指向刚才配置的 instanceCarFactory ,传入参数、得到实例。
首先准备一个Car类,该类有String brand 和 double price 两个属性,并定义get和set以及构造方法。
package com.atguigu.spring.beans.factory; public class Car { private String brand; private double price; Car(String brand, double price) { this.brand = brand; this.price = price; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Car [brand=" + brand + ", price=" + price + "]"; } }
通过调用静态工厂方法创建 Bean
调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中。 当客户端需要对象时,只需要简单地调用静态方法, 而不用关心创建对象的细节。要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称。 最后, 使用 <constrctor-arg>
元素为该工厂方法传递参数。
示例如下:
创建拥有静态工厂方法的类:
package com.atguigu.spring.beans.factory; import java.util.HashMap; public class StaticCarFactory { private static HashMap<String, Car> cars = new HashMap<String, Car>(); static { cars.put("audi", new Car("audi", 300000)); cars.put("baoma", new Car("baoma", 500000)); } public static Car getCar(String brand) { return cars.get(brand); } }
这个 getCar 静态方法可以根据brand属性返回对应的实例。
在xml文件中配置如下:
<bean id="car1" class="com.atguigu.spring.beans.factory.StaticCarFactory" factory-method="getCar"> <constructor-arg value="audi"></constructor-arg> </bean>要注意:这里的class属性指向StaticCarFactory,并非Car,指定factory-method为getCar,将参数传递给该方法就可以得到对应的实例。
通过调用实例工厂方法创建 Bean
实例工厂方法: 将对象的创建过程封装到另外一个对象实例的方法里。当客户端需要请求对象时, 只需要简单的调用该实例方法而不需要关心对象的创建细节.要声明通过实例工厂方法创建的 Bean,有三步:
0、配置拥有工厂方法的Bean
1、在 bean 的 factory-bean 属性里指定拥有该工厂方法的 Bean
2、在 factory-method 属性里指定该工厂方法的名称
3、使用 construtor-arg 元素为工厂方法传递方法参数
创建拥有工厂方法的类:
package com.atguigu.spring.beans.factory; import java.util.HashMap; public class InstanceCarFactory { private HashMap<String, Car> cars = null; public InstanceCarFactory() { cars = new HashMap<String, Car>(); cars.put("buk", new Car("buk",80000)); cars.put("ford", new Car("ford", 100000)); } public Car getCar(String brand) { return cars.get(brand); } }
在xml文件中分别配置工厂Bean和Car Bean:
<bean id="instanceCarFactory" class="com.atguigu.spring.beans.factory.InstanceCarFactory"></bean>
<bean id="car2" class="com.atguigu.spring.beans.factory.Car" factory-bean="instanceCarFactory" factory-method="getCar"> <constructor-arg value="ford"></constructor-arg> </bean>
这里car2的class属性指向Car,需要额外配置factory-bean属性指向刚才配置的 instanceCarFactory ,传入参数、得到实例。
相关文章推荐
- JavaScript 设计模式学习 Factory
- php设计模式 Factory(工厂模式)
- Spring Bean基本管理实例详解
- Spring中多配置文件及引用其他bean的方式
- 有关于JS构造函数的重载和工厂方法
- 解析Java中如何获取Spring中配置的bean
- Java中BEAN与EJB的区别浅析
- 图解Spring框架的设计理念与设计模式
- 深入解析Java的Spring框架中bean的依赖注入
- 浅谈spring容器中bean的初始化
- Java中Spring获取bean方法小结
- 详解Spring Boot 使用Java代码创建Bean并注册到Spring中
- 详解Java的Spring框架中bean的定义以及生命周期
- 详解Java的Spring框架中bean的注入集合
- Java的Spring框架中bean的继承与内部bean的注入
- Java类获取Spring中bean的5种方式
- 各种概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB
- 让Spring Controller 的方法基本数据类型参数支持Bean Validation
- 图文教程:使用MyEclipse的hibernate工具从数据库反向生成实体Bean
- JSR 303 - Bean Validation 介绍及最佳实践