当前位置: 首页 > article >正文

什么是Spring FactoryBean?有什么作用?

1、什么是Spring

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IOC和AOP为内核。含有七大核心模块

2、Spring的七大模块

在这里插入图片描述
(1)Spring Core:核心容器提供了Spring的基本功能。核心容器的核心功能是用IOC 容器来管理类的依赖关系.Spring采用的模式是调用者不理会被调用者的实例的创建,由Spring容器负责被调用者实例的创建和维护,需要时注入给调用者。这是目前最优秀的解耦模式。

(2)Spring AOP:Spring的AOP模块提供了面向切面编程的支持。SpringAOP采用的是纯Java实现。Spring AOP采用基于代理的AOP实现方案,AOP代理由IOC 容器负责生成、管理,依赖关系也一并由IOC 容器管理,尽管如此,Spring IOC 容器并不依赖于AOP,这样我们可以自由选择是否使用AOP。

(3)Spring ORM:提供了与多个第三方持久层框架的良好整合

(4)Spring DAO: Spring进一步简化DAO开发步骤,能以一致的方式使用数据库访问技术,用统一的方式调用事务管理,避免具体的实现侵入业务逻辑层的代码中

(5)Spring Context:它是一个配置文件,为Spring提供上下文信息,提供了框架式的对象访问方法。Context为Spring提供了一些服务支持,如对国际化(i18n)、电子邮件、校验和调度功能。

(6)Spring Web:提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的applicationContext.

(7)Spring MVC:提供了Web应用的MVC实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性

3、什么是Spring FactoryBean?

spring中有两种Bean:普通Bean和工厂Bean

spring提供了一个FactoryBean的工厂类接口,可以通过实现接口来实例化Bean

FactoryBean接口中有三个方法
①getObject 获取对象
②getObjectType 获取对象类型
③isSingleton 是否单例

4、Spring中bean的配置方式

1.xml文件中bean标签配置
2.配置类(springboot支持)
3.注解的方式
4.properties方式

5、FactoryBean和BeanFactory的区别

  • BeanFactory是一个工厂,也就是一个容器,是来管理和生产bean的;
  • FactoryBean是一个bean,但是它是一个特殊的bean,所以也是由BeanFactory来管理的,它是一个接口,他必须被一个bean去实现,不过FactoryBean不是一个普通的Bean,它会表现出工厂模式的样子,是一个能产生或者修饰对象生成的工厂Bean

6、SpringBean的生命周期

  • 首先应该定义Bean,定义Bean的常用方式有三种,(xml,注解,properties)
  • 定义后通过实现BeanDefinitionReader接口来读取Bean的定义
  • 在读取完bean的定义后通过实现BeanFactoryPostProcessor接口对Bean进行增强处理
  • 然后通过反射的方式创建Bean
  • 在对Bean进行初始化操作,通过执行set方法对属性赋值
  • 在属性初始化后执行BeanPostProcessorBefore也就是Bean的前置增强处理
  • 前置处理增强后调用Bean的init方法初始化
  • 初始化后的执行BeanPostProcessorAfter也就是Bean的后置处理
  • 后置处理后就是完整的Bean

7、Bean Factory和 Application contexts 有什么区别?

  • BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。

  • BeanFactory:是Spring里面最顶层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。BeanFactory 简单粗暴,可以理解为就是个 HashMap,Key 是 BeanName,Value 是 Bean 实例。通常只提供注册(put),获取(get)这两个功能。我们可以称之为 “低级容器”。

  • ApplicationContext 可以称之为 “高级容器”。因为他比 BeanFactory 多了更多的功能。他继承了多个接口。因此具备了更多的功能。例如资源的获取,支持多种消息(例如 JSP tag 的支持),对 BeanFactory 多了工具级别的支持等待,该接口定义了一个 refresh 方法,用于刷新整个容器,即重新加载/刷新所有的 bean。

源码下载:https://gitee.com/charlinchenlin/koo-erp


http://www.kler.cn/news/17229.html

相关文章:

  • ES6:promise简单学习
  • 从MultipartFile上传文件名乱码开始详解编解码知识
  • 2023年会展服务研究报告
  • DDD系列:二、应用架构设计演变
  • 初识WebAssembly
  • 京东T7架构师用470页就把微服务架构原理与开发实战文档讲完了
  • 【华为OD机试 2023最新 】递增字符串(C语言题解 100%)
  • 第二章--第一节--什么是语言生成
  • 【51单片机】数码管显示(样例展示以及异常分析)
  • Camtasia2023最好用的电脑屏幕录制软件
  • 11 | Qt的日志
  • 【UE】高级载具插件-04-坦克瞄准开火
  • mysql索引和事务
  • 很佩服的一个Google大佬,离职了。。
  • 1. 先从云计算讲起
  • NEWS|关于人工智能大型语言模型能否理解的争论
  • Allegro自定义快捷键(修改 ix iy 的步进,其他快捷功能)
  • 计算机视觉介绍
  • React初识
  • 怎么衡量纸白银走势图的强弱?
  • webpack loader原理以及自定义loader
  • 体验ChatGPT在具体应用场景下的能力与表现——vuedraggable的move多次触发问题
  • 五、C++内存管理机制 —— primitives(侯捷)
  • C#学习系列之throw new ApplicationException
  • 图书管理系统【控制台+MySQL】(Java课设)
  • 武忠祥老师每日一题||定积分基础训练(六)
  • 体验 ChatGLM-6B
  • 晚唐诗人杜荀鹤及其十首古诗赏析
  • Soft-RoCE部署及通信测试
  • 全方位揭秘!大数据从0到1的完美落地之运行流程和分片机制