通过FactoryBean来配置Bean

package logan.spring.study.factoryBean;public class Car {private String brand;private int price;public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}@Overridepublic String toString() {return "Car [brand=" + brand + ", price=" + price + "]";}public Car(String brand, int price) {super();this.brand = brand;this.price = price;}
}

package logan.spring.study.factoryBean;import org.springframework.beans.factory.FactoryBean;
//自定义的FactoryBean需要实现FactoryBean接口
public class CarFactoryBean implements FactoryBean<Car>{private String brand;public void setBrand(String brand) {this.brand = brand;}//返回bean的对象
    @Overridepublic Car getObject() throws Exception {// TODO Auto-generated method stubreturn new Car(brand,500000);}//返回Bean的类型
    @Overridepublic Class<?> getObjectType() {// TODO Auto-generated method stubreturn Car.class;}@Overridepublic boolean isSingleton() {// TODO Auto-generated method stubreturn true;}}

下面是配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 通过FactoryBean来配置Bean的实例 class:指向FactoryBean的全类名property:配置FactoryBean的属性但实际上返回的实例却是FactoryBean的getObject()方法返回的实例--><bean id="car" class="logan.spring.study.factoryBean.CarFactoryBean"><property name="brand" value="BMW"></property></bean></beans>

下面是输出结果:

五月 21, 2017 7:44:58 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7aec35a: startup date [Sun May 21 19:44:58 CST 2017]; root of context hierarchy
五月 21, 2017 7:44:58 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans-beanfactory.xml]
Car [brand=BMW, price=500000]

转载于:https://www.cnblogs.com/LoganChen/p/6885756.html

Spring入门第十三课相关推荐

  1. Spring入门第五课

    集合属性 在Spring中可以通过一组内置的xml标签(如:<list>,<set>,<map>)来配置集合属性. 配置java.util.List类型的属性,需要 ...

  2. Spring入门第十七课

    AOP编程 问题: 代码混乱: 越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀,每个方法在处理核心逻辑的同事还必须兼顾其他多个关注点. 代码分散:以日志需求为例,只是为了满足这个单 ...

  3. 打开程序时固定位置_新手入门第五课:免费开源图像处理程序GIMP之矩形选择工具...

    GIMP是一款图像处理软件,是跟Photoshop同一类型的软件,为了方便介绍,后面每篇相关GIMP图像处理软件的介绍文章的开头,我都将插入一段文字,用于介绍GIMP是什么,让不熟悉的朋友知道这是干什 ...

  4. java包名和类名可以一样吗_Java入门第三课:Java基本语法

    Java基础 编写Java程序时,应注意以下几点: 1.大小写敏感: Java是大小写敏感的,这就意味着标识符Hello与hello是不同的.有些操作系统不区分大小写,不区分的话,文件名是不完全正确的 ...

  5. for循环语句例题及解析python_Python入门第8课,for语句综合练习,突破循环累加难点...

    6月2日大陈上了Python入门第7课,从学生上交的练习题来看,第2题和第5题错误最多. 第2题:阅读程序写结果 for i in range(6): print("*") 有一部 ...

  6. 以二进制输出64位类型的数据_Java入门第五课:Java基本数据类型与变量的声明...

    数据类型 基本数据类型 Java有八种基本类型.六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,一种布尔型. Byte.short.int.long ...

  7. C# 编程入门第七课方法调用参数问题,方法标准,传递数组,返回数组,方法高级参数(out关键字参数,ref参数,params可变参数),方法重载,方法的递归,一些常用方法

    C# 编程入门第七课 文章目录 C# 编程入门第七课 1. 方法调用参数问题 2. 方法标准 3.传递数组,返回数组 4. 方法高级参数 4.1 out 关键字参数 4.2 ref 参数 4.3 pa ...

  8. c# 编程入门第六课常量,枚举,枚举转换成其他类型变量(枚举和int,转 string字符串转枚举),结构体,数组,冒泡排序,实际使用排序,方法(函数)

    c# 编程入门第六课 文章目录 c# 编程入门第六课 1. 常量 2. 枚举 3. 枚举转换成其他类型变量 3.1 枚举和int 3.2 转string 3.2 字符串转枚举 4.结构体 5.数组 7 ...

  9. C# 编程入门第五课,VS2019程序调试,for循环,水仙花数,Console.Write,又一种类型变换,三元表达式,产生随机数

    C# 编程入门第五课 文章目录 C# 编程入门第五课 1. VS2019程序调试 2. for循环 3. 水仙花数 4. Console.Write() 5. 又一种类型变换 6. 三元表达式 7.产 ...

最新文章

  1. 零起点学算法02——输出简单的句子
  2. python seek到指定行_python文件操作seek()偏移量,读取指正到指定位置操作
  3. 利用IShellExecuteHook接口对程序监控
  4. 水题 ZOJ 3875 Lunch Time
  5. SpringSecurity 认证通过后显示当前认证用户名
  6. TensorLayer的安装
  7. ClickHouse内核分析-MergeTree的存储结构和查询加速
  8. tensorflow中同时两个损失函数_深度度量学习中的损失函数
  9. python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
  10. python+opencv 问题解决方案,OpenCV Error: Unspecified error (The function is not implemented. Rebuild the
  11. KE之undefinded instruction问题记录
  12. mybatis 为什么每次插入的时候总会创建一个SqlSession?
  13. 手把手教你用frp内网穿透
  14. 联想拯救者Y7000P鼠标卡顿问题(已解决)
  15. 深度学习 - 38.Gensim Word2Vec 实践
  16. OpenCV(Python)颜色识别(一)
  17. GO 基础语法50问
  18. 2018年最流行JavaScript明星项目
  19. 201571030130/201571030124《小学四则运算练习软件需求说明》结对项目报告
  20. 免安装Oracleclient和PL/SQL

热门文章

  1. python有趣的小项目-10 个最值得 Python 新人练手的有趣项目
  2. python处理表格数据-python通过xrld库读取表格数据
  3. python导入excel表格-Python 将Excel表格数据导入MySQL数据库
  4. python写软件-Python是怎么编写软件的?
  5. python3.5怎么安装pip-python3.5.2安装pip管理工具
  6. python命令行大全-用什么库写 Python 命令行程序(示例代码详解)
  7. python散点图拟合曲线-Python解决最小二乘法拟合并绘制散点图
  8. python下载免费吗-python实现文件下载的方法总结
  9. python在哪里学比较好-新手从Python的哪个版本开始学比较好?
  10. LeetCode Binary Search Tree Iterator( 二叉树迭代器)