实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean

Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean.

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

package com.learn.spring.factory;import org.springframework.beans.factory.FactoryBean;import com.learn.spring.autowire.Car;public class MyFactoryBean  implements  FactoryBean<Car>{/*** 返回最终的对象.*/@Overridepublic Car getObject() throws Exception {return new Car("QQ",30000);}/*** 返回对象的类型*/@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最终的对象是由getObject方法来进行返回的。--><bean id="car2" class="com.learn.spring.factory.MyFactoryBean"></bean></beans>
package com.learn.spring.factory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.learn.spring.autowire.Car;public class Main {public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-factory.xml");Car car2 = (Car) ctx.getBean("car2");System.out.println(car2);}
}

FactroyBean方式配置bean相关推荐

  1. SpringXML方式配置bean的懒加载lazy-init

    lazy-init(懒加载),表示该bean在容器初始化的时候不进行初始化. 例如: <bean name="role1" class="com.fz.entity ...

  2. 基于注解的方式配置bean

    在 classpath 中扫描组件 组件扫描(component scanning):  Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件. 特定组件包括: @C ...

  3. spring 注解方式配置Bean

    概要: 再classpath中扫描组件 组件扫描(component scanning):Spring可以从classpath下自己主动扫描.侦測和实例化具有特定注解的组件 特定组件包含: @Comp ...

  4. 使用java方式装配Bean

    首先创建一个项目 然后是项目名 下图: 创建完项目先配置pom.xml依赖关系 <?xml version="1.0" encoding="UTF-8"? ...

  5. Spring配置Bean的方式

    配置Bean 基于XML配置Bean 基于注解配置Bean 基于Java类配置Bean 基于XML配置 ApplicationContext.xml <bean id="loginUs ...

  6. Spring学习(五)bean装配详解之 【XML方式配置】

    本文借鉴:Spring学习(特此感谢!) 一.配置Bean的方式及选择 配置方式 在 XML 文件中显式配置 在 Java 的接口和类中实现配置 隐式 Bean 的发现机制和自动装配原则 方式选择的原 ...

  7. Spring配置Bean的几种方式

    ​ Spring容器提供了三种装配bean的方式,所谓装配就是指将bean配置在spring容器中,并能够在类与类之间提供依赖关系. 一.隐式Bean发现机制和自动装配 ​ Spring从两个角度来实 ...

  8. Spring 利用FactoryBean来配置Bean

    Spring 利用FactoryBean来配置Bean 在之前的 博文 已经介绍可以利用java反射机制 和 工厂方法(Factory Method)的方法来在bean config file里 配置 ...

  9. JAVA互联网架构之Spring学习其一配置bean及工厂

    1.Spring作用: 1.生态体系庞大,全能型选手![springmvc是其一个子模块,jdbcTemplate能直接操作数据库!] 2.将其他组件粘合在一起 3.IOC容器和AOP[Aspect ...

最新文章

  1. 【七招破解WinXP系统访问网络变慢的故障】
  2. jquery---基本标签
  3. 了解CMS(Concurrent Mark-Sweep)垃圾回收器
  4. 如何才能写好一篇文章?
  5. LSTM神经网络 和 GRU神经网络
  6. 记一次Socket.IO长链服务的性能压测
  7. 各种Exit退出函数用法
  8. maven provided_Maven 教程之 pom.xml 详解
  9. IPC--进程间通信七 (socket)
  10. 使用wordpress_为什么我使用WordPress进行教育
  11. 荣耀赵明 “Diss” 5G 手机;甲骨文创始人埃里森:Uber 一文不值;Chrome 77 发布 | 极客头条...
  12. c语言有n个人围成一圈用指针,c语言编写n个人围成一圈,按1、2、3报数,报到3的人退出,求最后留在圈中的人是最初n个人中的第几个(用指针实现)...
  13. 【天光学术】西方哲学论文:中西方哲学中的虚无主义成分对比
  14. 天津大学计算机学院考研复试名单,天津大学各学院2019考研复试办法及复试名单...
  15. python中关于命名的例子_利用Python批量重命名文件(给非技术人员的Python实例参考)...
  16. 精尽 Dubbo 原理与源码专栏( 已经完成 69+ 篇,预计总共 75+ 篇 )
  17. Python | 凸多边形间重叠面积计算
  18. $ is not a function
  19. 由SoC到SOPC、SoC FPGA ,异同优缺点的介绍及常见应用场景
  20. Jquery(二)之高级用法

热门文章

  1. 用shell批量转储表
  2. poj 3660 Cow Contest 传递闭包
  3. Pdshell教程-利用现有数据库(没有PDM情况下)导出数据库PMD文件
  4. 【JVM性能调优】jstack和线程dump分析
  5. (一)html5中的新增元素和废除元素
  6. Angular6错误 Service: No provider for Renderer2
  7. IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输?
  8. 对于人工智能的学习有哪些建议?【转】
  9. Volley框架使用及源码解析
  10. 使用控制结构——条件分支语句——简单条件