博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring学习--实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean
阅读量:4652 次
发布时间:2019-06-09

本文共 2850 字,大约阅读时间需要 9 分钟。

Spring 中有两种类型的 bean , 一种是普通的 bean , 另一种是工厂 bean , 即 FactroyBean。

工厂 bean 跟普通 bean 不同 , 其返回的对象不是指定类的一个实例 , 其返回的是该工厂 bean 的 getObject 方法所返回的对象。

1 
2
5 6
7
8
9 10
1 package com.itdjx.spring.factorybeans; 2  3 /** 4  * @author Wáng Chéng Dá 5  * @create 2017-03-03 8:08 6  */ 7 public class Car { 8  9     private String name;10 11     private int price;12 13     public int getPrice() {14         return price;15     }16 17     public void setPrice(int price) {18         this.price = price;19     }20 21     public String getName() {22         return name;23     }24 25     public void setName(String name) {26         this.name = name;27     }28 29     public Car(String name, int price) {30         this.name = name;31         this.price = price;32     }33 34     @Override35     public String toString() {36         return "Car{" +37                 "name='" + name + '\'' +38                 ", price=" + price +39                 '}';40     }41 }
1 package com.itdjx.spring.factorybeans; 2  3 import org.springframework.beans.factory.FactoryBean; 4  5 /** 6  * @author Wáng Chéng Dá 7  * @create 2017-03-03 8:10 8  */ 9 public class CarFactoryBean implements FactoryBean {10 11     private String name;12 13     public void setName(String name) {14         this.name = name;15     }16 17     @Override //factoryBean 返回的实例18     public Object getObject() throws Exception {19         System.out.println("I am CarFactoryBean's getObject method...");20         return new Car(name, 500000);21     }22 23     @Override //factoryBean 返回的类型24     public Class
getObjectType() {25 System.out.println("I am CarFactoryBean's getObjectType method...");26 return Car.class;27 }28 29 @Override //返回的实例是否为单例30 public boolean isSingleton() {31 System.out.println("I am CarFactoryBean's isSingleton method...");32 return true;33 }34 }
1 package com.itdjx.spring.factorybeans; 2  3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5  6 /** 7  * @author Wáng Chéng Dá 8  * @create 2017-03-03 8:14 9  */10 public class Main {11 12     public static void main(String[] args) {13 14         ApplicationContext cxt = new ClassPathXmlApplicationContext("factory-beans.xml");15         Car car = (Car) cxt.getBean("car");16         System.out.println(car);17 18     }19 }

 

控制台输出:

I am CarFactoryBean's isSingleton method...

I am CarFactoryBean's getObjectType method...
I am CarFactoryBean's isSingleton method...
I am CarFactoryBean's getObject method...
Car{name='BMW', price=500000}

创建 IOC 容器时调用 isSingleton 若是返回 true 调用 getObjectType , 若返回 false , IOC 直接创建完成。

创建 Car 实例时调用 isSingleton -->> getObject , 实例创建完成。

 

转载于:https://www.cnblogs.com/goodcheap/p/6494105.html

你可能感兴趣的文章
SharePoint2010 -- 管理配置文件同步
查看>>
.Net MVC3中取得当前区域的名字(Area name)
查看>>
获得屏幕像素以及像素密度
查看>>
int与string转换
查看>>
adb命令 判断锁屏
查看>>
推荐一个MacOS苹果电脑系统解压缩软件
查看>>
1035等差数列末项计算
查看>>
CDMA鉴权
查看>>
ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
查看>>
过滤器与拦截器区别
查看>>
第二阶段站立会议7
查看>>
JAVA多线程
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>