spring中的BeanFactory与FactoryBean的讲解
1.BeanFactory
1.1Spring提供了IOC容器的两种实现方式
- ① BeanFactory:IOC容器的基本实现,是Spring内部的基础设施,是面向Spring本身的,不是提供给开发人员使用的。
- ② ApplicationContext:BeanFactory的子接口,提供了更多高级特性。面向Spring的使用者,几乎所有场合都使用ApplicationContext而不是底层的BeanFactory。
1.2 ApplicationContext的主要实现类
- ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件
- FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件
- 在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。
1.3 ConfigurableApplicationContext
- 是ApplicationContext的子接口,包含一些扩展方法
- refresh()和close()让ApplicationContext具有启动、关闭和刷新上下文的能力。
1.4 WebApplicationContext
- 专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作
2 FactoryBean
Spring中有两种类型的bean,一种是普通bean,另一种是工厂bean,即FactoryBean。
工厂bean跟普通bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂bean的getObject方法所返回的对象。
工厂bean必须实现org.springframework.beans.factory.FactoryBean接口。
<bean id="product" class="com.atguigu.spring.bean.ProductFactory"> <property name="productName" value="Mp3" /> </bean>
解释:上面实现org.springframework.beans.factory.FactoryBean
接口的ProductFactory在配制文件中创建得到的对象,并不是ProductFactory对象,它只是一个工厂,得到的是ProductFactory中getObject方法得到的对象。
小结:
1.Spring通过工厂bean支持我们参与到bean对象的创建过程中.
2.工厂bean最终返回的对象是由getObject方法来决定。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Spring中BeanFactory与FactoryBean接口的区别详解
前言 Spring框架中的BeanFactory接口和FactoryBean接口因为名称相似,老是容易搞混淆,而且也是面试过程中经常会碰到的一个问题.所以本文就专门给大家整理出来. 一.BeanFactory接口 BeanFactory接口是Spring容器的核心接口,负责:实例化.定位.配置应用程序中的对象及建立这些对象间的依赖. Spring为我们提供了许多易用的BeanFactory实现,XmlBeanFactory就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖关系.
-
详解Spring中的FactoryBean
spring FactoryBean 是创建 复杂的bean,一般的bean 直接用xml配置即可,如果一个bean的创建过程中涉及到很多其他的bean 和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean 例子如下: 1:创建一个Car类(是为了简便)一般不能直接给出Car类,如果是这样直接注入就可以或者Car对象了,这里只是为了简便. package com.myapp.core.factorybean; public class Car { private Strin
-
使用BeanFactory实现创建对象
本文实例为大家分享了BeanFactory实现创建对象的具体代码,供大家参考,具体内容如下 说明: 其作用是减少层与层之间的依赖. 实现步骤: 编写2个类(Student,Teacher)再编写beans.properties文件,接着编写BeanFactory类,最后编写测试类BeanTest. 参考代码如下: /** *beans.properties文件的内容(位于与src平级的config资源包下) */ Student=com.xxx.generic.demo.Student Teac
-
spring中的FactoryBean代码示例
上篇文章中我们介绍了浅谈Spring的两种配置容器,接下来我们就了解下spring中的FactoryBean的相关内容,具体如下. 从SessionFactory说起: 在使用SSH集成开发的时候,我们有时候会在applicationContext.xml中配置Hibernate的信息,下面是配置SessionFactory的一段示例代码: <bean id="sessionFactory" class="org.springframework.orm.hibernat
-
深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)
一般来说,修改框架的源代码是极其有风险的,除非万不得已,否则不要去修改.但是今天却小心翼翼的重构了Mybatis官方提供的与Spring集成的SqlSessionFactoryBean类,一来是抱着试错的心态,二来也的确是有现实需要. 先说明两点: 通常来讲,重构是指不改变功能的情况下优化代码,但本文所说的重构也包括了添加功能 本文使用的主要jar包(版本):spring-*-4.3.3.RELEASE.jar.mybatis-3.4.1.jar.mybatis-spring-1.3.0.jar
-
spring中FactoryBean中的getObject()方法实例解析
本文研究的主要是spring中FactoryBean中的getObject()方法的相关内容,具体如下. FactoryBean接口定义了以下3个接口方法: Object getObject():返回有FactoryBean创建的Bean实例,如果isSingleton()返回true,则该实例会放到Spring容器的单实例缓存池中. boolean isSingleton():确定由FactoryBean创建Bean的作用域是singleton还是prototype. Class getObj
-
Spring中BeanFactory解析bean详解
在该文中来讲讲Spring框架中BeanFactory解析bean的过程,该文之前在小编原文中有发表过,先来看一个在Spring中一个基本的bean定义与使用. package bean; public class TestBean { private String beanName = "beanName"; public String getBeanName() { return beanName; } public void setBeanName(String beanName
-
spring中的BeanFactory与FactoryBean的讲解
1.BeanFactory 1.1Spring提供了IOC容器的两种实现方式 ① BeanFactory:IOC容器的基本实现,是Spring内部的基础设施,是面向Spring本身的,不是提供给开发人员使用的. ② ApplicationContext:BeanFactory的子接口,提供了更多高级特性.面向Spring的使用者,几乎所有场合都使用ApplicationContext而不是底层的BeanFactory. 1.2 ApplicationContext的主要实现类 ClassPath
-
Spring中IOC和AOP的深入讲解
前言 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益
-
Spring中校验器(Validator)的深入讲解
前言 Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用. 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不同的层,不同的方法上,导致代码冗余,浪费时间,违反DRY原则. 每一个控制器都要校验 过多的校验参数会导致代码太长 代码的复用率太差,同样的代码如果出现多次,在业务越来越复杂的情况下,维护成本呈指数上升. 可以考虑把校验的代
-
详解设计模式在Spring中的应用(9种)
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计的思想理念,才能在工作学习中运用到"无形". Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory
-
BeanFactory和FactoryBean的区别示例详解
目录 正文 BeanFactory和FactoryBean的区别 1.BeanFactory 2.FactoryBean 正文 这个之前经常会遇到别人问 但是一直不是很能理解 工作开发中我对于bean的使用比较少 就是偶尔启动出错才会出现 可能是水平有限 但是bean 也是非常核心的问题 书到用时方恨少 且看且珍惜 BeanFacotry是spring中比较原始的Factory. 如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring
-
简单了解Spring中BeanFactory与FactoryBean的区别
这篇文章主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在Spring中有BeanFactory和FactoryBean这2个接口,从名字来看很相似,比较容易搞混. 一.BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean().containsBean()等管理Be
-
Spring BeanFactory 与 FactoryBean 的区别详情
目录 区别和联系 BeanFactory FactoryBean 总结 前言: 在 Spring 中, IOC 是很重要的概念,其本质就是 map 结构,存储容器和业务 Bean 信息.但是 BeanFactory 和 FactoryBean 的区别却是一个很重要的知识点,在本文中将结合源码进行分析讲解. 区别和联系 BeanFactory 在 Spring 中,所有的 Bean 都是由 BeanFactory (也就是 IOC 容器)来进行管理的.BeanFactory 定义了容器的基本形式,
-
深入了解Spring中的FactoryBean
FactoryBean和BeanFactory由于在命名上极其相似,一直以来困扰了不少的开发者. BeanFactory,耳熟能详的Spring核心接口,提供IoC容器的最基本功能.但要解释FactoryBean一句话可能就说不清楚了.我们将从下面的例子逐步说明,FactoryBean是什么,它提供了什么样的能力. /** * 布料 * 包含颜色属性 * Created by OKevin On 2019/9/3 **/ public class Cloth { private Red red;
随机推荐
- 55分钟学会正则表达式
- Java concurrency之AtomicReference原子类_动力节点Java学院整理
- oracle 更改数据库名的方法
- JS实现直接运行html代码的方法
- 封装获取dom元素的简单实例
- DiscuzNT 论坛与主站的同步登录与退出
- 在Python中使用poplib模块收取邮件的教程
- jQuery实现获取元素索引值index的方法
- node.js学习总结之调式代码的方法
- 离开页面时检测表单元素是否被修改,提示保存的js代码
- 逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
- DOS下查看硬盘分区该使用什么命令
- 微信小程序联网请求的轮播图
- lnmp关闭mysql日志保护硬盘空间的方法
- 谈谈技术原则,技术学习方法个人总结第1/2页
- Jquery常用技巧收集整理篇
- javascript 内存回收机制理解
- Javascript实现倒计时时差效果
- 解读安装SoundMAX秘密,让AC 97聆听天赖的方法
- 基于StringUtils工具类的常用方法介绍(必看篇)