为啥要使用FactoryBean:

  在配置Bean的时候,需要用到IOC容器中的其它Bean,这个时候使用FactoryBean配置最合适。

public class Car {
private String brand;
private double price; public Car() {
System.out.println("com.cn.Car's Constructor");
} public Car(String brand, double price) {
this.brand = brand;
this.price = price;
} public void setBrand(String brand) {
System.out.println("setBrand");
this.brand = brand;
} public String getBrand() {
return brand;
} public void setPrice(double price) {
this.price = price;
} public double getPrice() {
return price;
} @Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
'}';
}
}
/**
* 自定义的FactoryBean需要实现FactoryBean接口
*/
public class CarFactoryBean implements FactoryBean<Car>{

  //FactoryBean自己的属性
private String brand; public void setBrand(String brand) {
this.brand = brand;
} //返回bean的对象
@Override
public Car getObject() throws Exception {
return new Car("BMW", 500000);
} @Override
public Class<?> getObjectType() {
return Car.class;
} @Override
public boolean isSingleton() {
return 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="factorybean.CarFactoryBean">
<property name="brand" value="BMW"></property>
</bean>
</beans>
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("12-1.xml");
Car car = (Car) ctx.getBean("car");
System.out.println(car);
}
}

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOIAAAAnCAIAAACdVwOHAAADaElEQVR4nO2ZsY7UMBCG73V2UiEEFRKcdO7oTteuWwQPMOIhmJKOinkJbOleDQonjhPbu9lLlqzh/3RF5HUc2/NlbOfu3r2/f/X6Tfx7enrqMn5/+RQvZn+zOmlJrfBGIPrw/Pn44y0N149fifbuFChzd6mmZ8tzj29T067rHj8eYz+f7+Ho7bJIUwD2BZqCBoCmoAGgKWgAaAoaAJqCBoCmoAGgKWiAq2tqxTkn9u/+g4fIyhYP3aqd/weiPuDbNrtIUyvOe++9v/TxMcx977cL+ekGiawom+GnUNkPKJv+dmVDhtU5J8fDUZyyCTcm3U7a2Zb178BsXK7vs2F13ns39HyrklIHCnWu8W6f19Swiu0fafmymKU93rz3tQaJDKuyoWJlMqy9lMHyUXcrTqxhdSKhbqGdm6I4AzFeZFjYbFiSU6yzj6asL39kcOKqmgbhZhmlVrnXVPnhcBSnqsqWVVVHKzm0ppXA7EieO4+H42xKiUyMV1gKHg4Pm5Tk6Sl/lhkDvfHrfV7ToluGNUyW2GRBD+vnxEun05dMxJ2+q9iyTDe4ZOW0lDkxxmF5ip0REWUek6eIrtM07fNkgzEdaXHTEjYg6eaq35JUop5OaTJjk7yQqrympLRqVZdKw7rtgeQlmk53nMmkZ+9clk3TtbRwV63lNADJ/Rek51I2FWvFey92+MmK915VQ8hfPKdLRtploaU4WUOWmoy0skEksjYsu1ZcHNeumu6TTYuL/vjeT61aMpL8YknLtYuLF/00DIY1HJsSTYVD4UpNF4x0rum8TrrKu3MjHca1zRK/etHf4QglMWbhCLUwDF1N00mOKcz1OTuH+5NUfZZyNqXpuT5Ya7fTtD7SrqBpP56u64y1hij1oPqgKEefwmg81ljR2WFoXUlOsc4+msaPDulSGHeH3vtfP799T/Lf9N4x/xNZ1vm+s5AVqi2Pm7lQx6lqtr0rMjt8JFsIw2yzN+HULC+JQfq42kjLhcPYx5DHtaW26I/b9DjP1/ogVUorpQ9Sl6SPhfybn/evx5IvqddIJ63Q78J3+bwPAku+pNZWCbAGaAoaAJqCBoCmoAGgKWgAaAoaAJqCBoCmoAGgKWgAaAoaAJqCBoCmoAGgKWgAaAoaAJqCBoCmoAGgKWgAaAoaAJqCBvgD55Bufbghe3gAAAAASUVORK5CYII=" alt="" />

12.Spring通过FactoryBean配置Bean的更多相关文章

  1. Spring 通过FactoryBean配置Bean

    1.实现FactoryBean接口 import org.springframework.beans.factory.FactoryBean; public class CarFactoryBean ...

  2. Spring学习记录(十)---使用FactoryBean配置Bean

    之前学了,配置bean可以用普通全类名配置.用工厂方法配置,FactoryBean又是什么呢 有时候配置bean要用到,IOC其他Bean,这时,用FactoryBean配置最合适. FactoryB ...

  3. Spring工厂方法(factory-bean)配置bean

    在spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中 ...

  4. Spring(十四):使用FactoryBean配置Bean

    FactoryBean简介: 1)Spring中Bean包含两种一种是普通Bean,另外一种是FactoryBean.它们都受IOC容器管理,但是也有不同之处. 2)普通Bean与FactoryBea ...

  5. spring FactoryBean配置Bean

    概要: 实例代码具体解释: 文件夹结构 Car.java package com.coslay.beans.factorybean; public class Car { private String ...

  6. Spring初学之FactoryBean配置Bean

    实体bean: Car.java: package spring.beans.factorybean; public class Car { private String name; private ...

  7. Spring4.0学习笔记(7) —— 通过FactoryBean配置Bean

    1.实现Spring 提供的FactoryBean接口 package com.spring.facoryBean; import org.springframework.beans.factory. ...

  8. 通过FactoryBean配置Bean

    这是配置Bean的第三种方式,FactoryBean是Spring为我们提供的,我们先来看看源码: 第一个方法:public abstract T getObject() throws Excepti ...

  9. spring4-2-bean配置-10-通过FactoryBean配置bean

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk8AAAFHCAIAAAA3Hj/JAAAgAElEQVR4nO2dzdX0rA2Gp6asclwQTW

随机推荐

  1. Git学习三

    一.准备Github远程仓库 1.github官网注册账户 2.ubuntu端创建SSH Key $ssh-keygen -t rsa -C "youremail@example.com&q ...

  2. 5位ID生成方案

    最近在某微信技术群,有人问到如何生成5位唯一数字+字母字符串的算法,要保证生成的字符串唯一,且字符串内部也要唯一. 怎么样,这个需求是不是很简单,也有点特殊呢?简单是指需求简单,特殊是指,字符串长度要 ...

  3. Luogu P1122最大子树和 【水树形Dp】By cellur925

    题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...

  4. 设置mysql 定时备份任务

    1 修改配置文件  /etc/my.conf (为了命令 mysqldump能省略输入密码执行,mysql5.5 之后已经不建议控制台直接输入密码的方式) 增加如下配置 [client]host=lo ...

  5. TRACE Method 网站漏洞,你关闭了吗[转]

    危险:该漏洞可能篡改网页HTML 源码 最近采用360 web scan 对服务器进行扫描.发现漏洞.TRACE Method Enabled 安全打分98分.前一阵有网页JS被人篡改,可能就是从这个 ...

  6. CodeForces 923C Perfect Security

    C. Perfect Security time limit per test3.5 seconds memory limit per test512 megabytes inputstandard ...

  7. QT5每日一学(三) QT登陆对话框

    一.使用设计模式创建界面 1.新建Qt Widgets Application,项目名称为login,类名和基类保持MainWindow和QMainWindow不变. 2.完成项目创建后,向项目中添加 ...

  8. 题解报告:hdu 1032 The 3n + 1 problem(克拉兹问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1032 Problem Description Problems in Computer Science ...

  9. SPFarm.local返回值为null

    创建了一个控制台应用程序,想输出SP2010服务器场下所有对象模型信息,结果:SPFarm.local返回值为null. 经查询解决方法: 1 .net framework版本要使用3.5: 2 目标 ...

  10. webform 基础一

    WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件.让开发者认为自己是在操作一个windows界面.极大地提高了开发效率.区别于dreamweaver,可以用代码写,也可以把控件像w ...