工厂bean和bean工厂

FactoryBean(工厂bean):是bean的加工工厂,是对已知Bean的加工,是一个接口,要实现三个方法:

① Object getObject()可以对bean进行加工添加功能。

② Class getObjectType()。

③ Boolean isSingleton()。

Bf.getBean(“ab”)只是得到MyFactory.getObject()的object对象 所以最后要强转。

Beanfactory bean工厂 就是生产bean的工厂,注入:

由于Spring IoC容器以框架的方式提供了工厂方法的功能,并以透明的方式给开发者,不过在一些遗留系统或第三方类库中,我们还会碰到工厂方法,这时用户可以使用Sping使用工厂方法注入的方式进行配置。

静态工厂方法:

很多工厂类方法都是静态的,这意味着用户在无须创建工厂类实例的情况就可以调用工厂类方法。因此静态工厂方法比非静态工厂方法的调用更加方便。我们将carFactory类的getCar()方法调整为静态的然后再Spring配置如下:


<bean id=”car” class =”carFactory” factory-method=”getCar”/>

用户直接通过class属性指定工厂类, 然后在通过factory-method指定对应的静态工厂方法创建bean。

如果静态工厂方法需要参数则用传入

实例工厂方法:

有些工厂是非静态的,即必须是实例化工厂类才能调用工厂方法。

下面我们实例化一个工厂类CarFactory类来为Car类提供实例。


package com.car;

public class CarFactory

{ public Car getCar(){return new Car();}}

工厂类负责创建一个或多个目标类实例,工厂类方法一般以接口或抽象类变量的形式返回目标类。工厂类对外屏蔽了目标类的实例化步骤。调

用甚至不知道如何具体的目标类是什么。

下面我们在Spring 配置文件中进行配置


<!--工厂Bean生成目标Bean-->

<bean id=”carFactory” class=”com.CarFactory”/>

<!--工厂Bean目标Bean-->

<bean id=”car” factory-bean=”carFactory” factory-method=”getCar”/>

factory-bean=”carFactory”指定了工厂类Bean,factory-method=”getCar”指定了工厂类Bean创建该Bean的工厂方法。

和静态工厂类似如果工厂方法需要参数则用


<p:constructor-arg index=”0”value="calendar"></p:constructor-arg>传入
posted @   尐鱼儿  阅读(942)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示