为啥要使用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. 目标Python2+3

    很多时候你可能希望你开发的程序能够同时兼容Python2+和Python3+. 试想你有一个非常出名的Python模块被很多开发者使用着,但并不是所有人都只使用Python2或者Python3.这时候 ...

  2. hdu 1044 Collect More Jewels

    题意: 一个n*m的迷宫,在t时刻后就会坍塌,问:在逃出来的前提下,能带出来多少价值的宝藏. 其中: ’*‘:代表墙壁: '.':代表道路: '@':代表起始位置: '<':代表出口: 'A'~ ...

  3. ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件(二)

    1. 为啥要做这个点赞插件?    praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观. 在做个人博客时遇到了文章点赞问题.联想到各大社交网络中的点赞特效:手势放大.红心放大等等, ...

  4. ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码

    上一篇 我们介绍了什么是ABP,这一篇我们通过原作者的”简单任务系统”例子,演示如何运用ABP开发项目 创建实体 一般来说任务是需要分配给人来做的,所以我们创建两个实体模型类:Task和Persion ...

  5. HttpServletRequest对象,自己学习的心得。

    1. HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过Http超文本传输协议访问服务器时,Http请求头中的所有信息都封装在这个对象中, ...

  6. 安装JPype时出现的 Unable to find vcvarsall.bat

    解决方案,在网上找到的,mark一下,亲测有效 C:/Python31/Lib/distutils目录下的msvc9compiler.py中 修改MSVCCompiler函数:vc_env = que ...

  7. 用unsigned char 表示字节

    在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同 ...

  8. mysql 5.7安装过程中,初始化的问题

    初始化不指定参数文件,如使用以下命令初始化: ./mysqld --initialize --user=mysql --basedir=/data/mysql/barry_mysql --datadi ...

  9. Farseer.net轻量级开源框架 中级篇:常用的扩展方法

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseM ...

  10. vue2.0 静态prop和动态prop

    动态prop: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...