首页 > 其他分享 >工厂方法与FactoryBean

工厂方法与FactoryBean

时间:2023-05-01 12:00:25浏览次数:41  
标签:容器 对象 Spring 工厂 FactoryBean 方法 IOC

概述

工厂方法是比较常见,常用的一种设计模式。FactoryBean是Spring提供的一种Bean注入IOC容器的方式。

工厂方法

在做日常开发时,一般都会避免直接new对象,而且将new的操作丢给IOC容器,但对于第三方系统的集成,我们不太好直接丢给IOC容器,此时可以通过工厂模式, 提供一个工厂类来实例化具体的接口 实现类,这样,主体对象只需要依赖工厂类,具体使用的实现类有变更的话,只是变更工厂类,而主 体对象不需要做任何变动。 这是一种良好的设计思路。然后我们可以将此工厂对象通过@Component等注解,注入到IOC容器中,由Spring进行管理。

FactoryBean

FactoryBean是Spring容器提供的一种可以扩展容器对象实例化逻辑的接口,请不要将其与容器名称BeanFactory相混淆。FactoryBean,其主语是Bean,定语为Factory,也就是说,它本身与其他注 册到容器的对象一样,只是一个Bean而已,只不过,这种类型的Bean本身就是生产对象的工厂 (Factory)。 当某些对象的实例化过程过于烦琐,通过XML配置过于复杂,使我们宁愿使用Java代码来完成这 个实例化过程的时候,或者,某些第三方库不能直接注册到Spring容器的时候,就可以实现org.springframework.beans.factory.FactoryBean接口,给出自己的对象实例化逻辑代码。

以Mybatis集成到Spring为例,就使用到了FactoryBean将关键对象SqlSessionFactory、Mapper接口代理对象注入到了IOC容器中,由Spring来接管,使得我们可以通过简单的@Resource等装配机制拿到对应的实例对象。

在实现了FactoryBean接口的类中,我们可以自定义许多的逻辑,然后在注入到IOC容器中,这是很方便强大的功能。

 

标签:容器,对象,Spring,工厂,FactoryBean,方法,IOC
From: https://www.cnblogs.com/zhiyong-ITNote/p/17366308.html

相关文章

  • PIL、Pillow安装使用方法
    PIL(PythonImagingLibrary)是Python常用的图像处理库,而Pillow是PIL的一个友好Fork,提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。Pillow的文档:http://pillow.readthedocs.io/en/latest/Pillow的github:https://githu......
  • MySql记录的一些使用方法和经验MariaDB
    MySql记录的一些使用方法和经验MariaDB MySQL数据库最初由瑞典的TomasUlin、AllanLarsson和MichaelWidenius创立。后来,该公司被SUNMicrosystems购买了,然后在2008年被Oracle购买。Oracle是一个主要提供商的商业数据库公司,这意味着MySQL现在是由Oracle控制并拥有的。然而,MyS......
  • 无线键盘无法打开数字键盘numlock的解决方法
    1、把以下文本另存为后缀为vbs的脚本,运行即可打开数字小键盘。2、按Win+R,运行shell:startup3、把脚本拖入打开的窗口。以后每次开机都会运行此脚本,打开NUMLOCK数字键盘。'按Win+R,运行:shell:startup把脚本拖入其中SetKeyToPress=WScript.CreateObject("WScript.Shell")KeyToPr......
  • 忘掉Xavier初始化吧!最强初始化方法ZerO来了
    文|小戏谈及最典型的深度学习模型的训练,脑海里浮现的格式化的套路是什么?给定一个问题,给定一个数据集,弯弯绕绕确定好选择的神经网络的架构,然后上手调参,接下来的工作彷佛像是固定的重复工作,随机初始化参数,迭代训练,评估结果,直到一个模型新鲜出炉。其实认真反思一下这套流水线的作业......
  • 六种比较方法使用a < b一种方式表示出来
    a>b等价于b<aa>=b等价于!(a<b)即a不小于ba<=b等价于!(b<a)即b不小于aa==b等价于!(a<b)&&!(b<a)夹逼原理a!=b等价于(a<b)||(b<a)在c++中重载运算符时,只需要重载<小于号就可以了参考:https://www.acwing.com/file_system/file/......
  • spring3 mvc系列二:方法返回…
    接上篇,结构无大变化。新建后台代码用以测试返回类型,在这里我新建的如下:1.2.packagecn.org.spartacus.spring;3.4.importjavax.servlet.http.HttpServletRequest;5.importjavax.servlet.http.HttpServletResponse;6.importorg.springframework......
  • google地图常用方法
    googlemapapiv31.计算两点间距离加载geometry库复制代码代码如下:<scripttype="text/javascript"src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry"></script>计算距离复制代码代码如下:varmeters=google.maps.geometry.spherical......
  • 百度地图常用方法
    varmap=newBMap.Map("container");//创建地图实例map.addControl(newBMap.NavigationControl());//地图控制插件,该插件可以控制地图的位置地图的显示比例map.addControl(newBMap.ScaleControl());//显示在地图下方,告诉你地图上1cm对应的真实距离//map.addContr......
  • Android下结束进程的方法
    一、结束一个活动Activity要主动的结束一个活动Activity,使用finish方法,而且这个方法最后会调用Activity的生命周期函数onDestroy方法,结束当前的Activity,从任务栈中弹出当前的Activity,激活下一个Activity。当然其他的finish系列方法,我们不在这里做详细讨论,有兴趣的同学可以自......
  • IOS上传图片的方法
    下面是图片上传的方法:-(void)loadImage:(NSString*)aurl{NSData*imageData;NSMutableData*postBody;NSString*stringBoundary,*contentType;NSURL*url=[NSURLURLWithString:aurl]......