什么是复杂对象?
复杂对象是指我们通过new创建不了的对象,此对象的创建还需要别的条件,如jdbc的Connection、mybatis的sqlSesscionFactory。

一、factoryBean接口 :spring提供的原生创建复杂对象的方式

实现spring提供的facrotyBean接口,实现FactoryBean三个方法:

public class XxxFactoryBean implements FactoryBean {@Overridepublic Object getObject() throws Exception {return null;}@Overridepublic Class<?> getObjectType() {return null;}@Overridepublic boolean isSingleton() {return false;}
}

1、getObject():该方法用于返回复杂对象的实例,在该方法中添加创建复杂对象的代码。
2、getObjectType():返回复杂对象的class。
3、isSingleton():返回true或false,true指单例创建该对象,false多例。

二、实例工厂

区别:
由实例创建出复杂对象。
好处:
1.避免spring框架的倾入(不需要spring提供FantoryBean接口了)
2.整合遗留系统

    <!-- 实例工厂创建复杂对象 --><!-- 实例工厂 --><bean id="connFactory" class="com.sms.factory.ConnectionFactory"></bean><!-- 对实例的引用后调用实例方法创建 复杂对象 --><bean id="conn" factory-bean="connFactory" factory-method="getConn"></bean>

三、静态工厂

区别:
由类调用静态方法创建复杂对象。少了一步创建工厂实例bean。

    <!--静态工厂--><bean id="conn" class="com.sms.factory.StaticConnFactory" factory-method="getConn"></bean>

spring创建复杂对象的三种方式相关推荐

  1. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

  2. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/m ...

  3. 反射应用和获取Class对象的三种方式

    一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...

  4. 创建线程的第三种方式---JDK8新特性

    创建线程的第三种方式-JDK8新特性 实现Callable接口,创建线程 Runnable和Callable接口的不同 1.Callable可以返回一个类型V,而Runnable不可以,也就是说Cal ...

  5. Java 创建一个线程的三种方式

    Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...

  6. 创建线程的第三种方式:实现Callable接口(含部分源码解析)

    创建线程的第三种方式--实现Callable接口 package com.lqy.Multithreading; import java.util.concurrent.Callable; impor ...

  7. 获取Class对象的三种方式

    获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...

  8. Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  9. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

最新文章

  1. .net 下直接读分区数据,并生成ISO光盘镜像文件,含DEMO
  2. 独家 | 综述:情感树库上语义组合的递归深层模型
  3. 前端一HTML:十:选择器
  4. 物联网 android前景,物联网现状及未来前景分析
  5. Asp.net mvc 添加Jquery UI
  6. TTL expired in transit--问题篇~
  7. 虚拟机安装windows ghost版本系统记录完整过程
  8. [vue] webpack打包vue速度太慢怎么办?
  9. NVIDIA将全面支持笔记本混合显卡技术
  10. 基于Java+SpringBoot+mybatis+vue+element实现旅游管理系统
  11. 杭电计算机专业第五轮评估,第五轮学科评估要来了!这些双非学科有机会冲击A级,入股不亏!...
  12. 水面反光如何拍摄_反光倒影的摄影怎么拍?
  13. 刷百度权重的方法!!刷百度权重不为人知的内幕!慎用!
  14. 紫书——Repeating Decimals UVA - 202
  15. 端口扫描:zenmap工具的使用
  16. 123456789 往这串数字里插入3个乘号,使得结果最大
  17. 逻辑综合重点解析55题(Design Compiler篇)
  18. 求s=a+aa+aaa+aa…a的值
  19. Rust语言- 匹配器 match
  20. 关于“拉丁方”的C语言程序

热门文章

  1. Agisoft PhotoScan Professional软件处理无人机航拍照片基本流程
  2. 浅谈模型压缩之量化、剪枝、权重共享
  3. 一块钱哪里去了?--java浮点型背后的故事
  4. 利用CORS实现跨域请求--转
  5. 李宏毅深度学习——第一天
  6. 【科技金融】互联网金融简介
  7. 【采用】信用评分卡模型-数据缺失值处理
  8. The Illustrated Transformer:中英文(看原文,很多翻译是错误的)
  9. mysql linux 使用索引_正确使用MySQL索引
  10. Java Review - 并发编程_ThreadLocalRandom实现原理源码分析