Spring-11:通过FactoryBean配置Bean
2016-07-20 15:45
507 查看
Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean.。
工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象
使用FactoryBean需要实现FactoryBean接口,并重写其中的三个方法:
示例:
先创建一个Car类:
在main方法中获取car bean,打印输出如下:
工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象
使用FactoryBean需要实现FactoryBean接口,并重写其中的三个方法:
示例:
先创建一个Car类:
package com.atguigu.spring.beans.factorybean; 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 + "]"; } }然后创建用于产生Car实例的工厂Bean,并实现 org.springframework.beans.factory.FactoryBean 接口:
package com.atguigu.spring.beans.factorybean; import org.springframework.beans.factory.FactoryBean; public class CarFactoryBean implements FactoryBean<Car> { private String brand; public void setBrand(String brand) { this.brand = brand; } //返回bean的实例 @Override public Car getObject() throws Exception { Car car = new Car(brand, 500000); return car; } //返回bean的类型 @Override public Class<?> getObjectType() { // TODO Auto-generated method stub return Car.class; } //实例是否为单列,是,则返回true,否则返回false @Override public boolean isSingleton() { // TODO Auto-generated method stub return true; } }在xml文件中配置:
<!-- 通过 FactoryBean 来配置Bean的实例 class:指向FactoryBean的全类名 property:配置FactoryBean的属性 但是实际返回的实例是由 FactoryBean的getObject方法返回 --> <bean id="car" class="com.atguigu.spring.beans.factorybean.CarFactoryBean"> <property name="brand" value="BMW"></property> </bean>
在main方法中获取car bean,打印输出如下:
相关文章推荐
- 设计模式之创建型模式 - 特别的变量问题
- 图解Spring框架的设计理念与设计模式
- C#抽象工厂模式的几种实现方法及比较
- 简单工厂模式与工厂方法模式
- Spring及相关框架知识小汇
- Head First -- 简单工厂
- Spring官网改版后下载Spring方法
- java设计模式之工厂模式
- Java设计模式之工厂(Factory)
- java设计模式学习
- 个人对设计模式的理解-->建造者模式
- 流与反射
- Android进阶之大话设计模式
- 制造工厂中的计件工资管理
- 易掌管-计件工资系统免费登记派送中
- 注解@AutoWired
- C# 设计模式----抽象工厂模式
- C++(简单工厂)
- 【设计模式】抽象工厂模式
- 【设计模式】——工厂三姐妹