详解Spring中bean实例化的三种方式
发布时间 - 2026-01-11 00:39:59 点击率:次今天我想来说说如何通过xml配置来实例化bean,其实也很简单。

使用xml配置来实例化bean共分为三种方式,分别是普通构造方法创建、静态工厂创建、实例工厂创建,OK,那么接下来我们来分别看看这几种方式。
普通构造方法创建
这种创建方式使我们使用最多的一种创建方式,直接配置bean节点即可,比如我有一个User类,如下:
public class User {
public void add() {
System.out.println("add()---------");
}
}
然后通过简单配置一个bean节点就可以获取实例了,如下:
<bean class="org.sang.User" id="user"/>
OK,我们通过如下代码进行一个简单的测试:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) context.getBean("user");
System.out.println(user);
运行输出结果如下:
静态工厂创建
除了通过普通的构造方法创建之外,我们也可以通过静态构造方法来创建一个bean的实例,假设我有一个类叫做User2,如下:
public class User2 {
public void add() {
System.out.println("add2()---------");
}
}
我给它创建一个静态工厂,如下:
public class User2Factory {
public static User2 getInstance() {
return new User2();
}
}
该工厂中有一个静态方法,该静态方法返回一个User2的实例,在Spring的配置文件中,我们看看如何生成User2的实例:
复制代码 代码如下:
<bean id="user2" class="org.sang.User2Factory" factory-method="getInstance"/>
还是bean节点,只是多了一个factory-method属性,该属性指明该类中的静态工厂方法名为getInstance,这样Spring框架就知道调用哪个方法来获取User2的实例了,测试代码如下:
@Test
public void test2() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User2 user = (User2) context.getBean("user2");
user.add();
}
测试结果如下:
值得强调的是,这种方法并不常用。
实例工厂创建
小伙伴们看了静态工厂创建bean实例肯定都觉得很麻烦,事实上还有比静态工厂更麻烦的写法,那就是通过实例工厂来创建bean实例。实例工厂,顾名思义,就是我们工厂中的方法不是静态的,比如说,我有一个实体类叫做User3,如下:
public class User3 {
public void add() {
System.out.println("add3()---------");
}
}
然后我还有一个工厂方法,如下:
public class User3Factory {
public User3 getUser3() {
return new User3();
}
}
小伙伴们看到,在User3Factory类中有一个getUser3的方法,该方法返回一个User3类的实例,但是该方法不是静态的,那么我们在Spring的配置文件中要进行怎样的配置才能获取User3的一个实例呢?如下:
<bean class="org.sang.User3Factory" id="user3Factory"/> <bean id="user3" factory-bean="user3Factory" factory-method="getUser3"/>
第一个bean用来获取user3Factory的实例,第二个bean则根据User3Factory的实例,然后指定factory-method,通过getUser3方法来获取User3的实例。
测试代码如下:
@Test
public void test3() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User3 user = (User3) context.getBean("user3");
user.add();
}
测试结果如下:
OK,以上就是bean实例化的三种方式,最最常用的是第一种。
本文案例GitHub地址https://github.com/lenve/JavaEETest/tree/master/Test28-Spring1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# 实例化bean
# spring实例化bean过程
# bean的实例化
# Spring Bean实例化实现过程解析
# Spring实例化bean的方式代码详解
# Spring中实例化bean的四种方式详解
# Spring实例化bean的四种方式详解
# 的是
# 方法来
# 我有一个
# 三种
# 创建一个
# 配置文件
# 有一个
# 类中
# 小伙伴们
# 我还
# 看了
# 第一个
# 最多
# 中有
# 也很
# 可以通过
# 第二个
# 几种
# 使我
# 顾名思义
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
潮流网站制作头像软件下载,适合母子的网名有哪些?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何实现API版本控制_Laravel版本化API设计方案
EditPlus中的正则表达式 实战(1)
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
phpredis提高消息队列的实时性方法(推荐)
开心动漫网站制作软件下载,十分开心动画为何停播?
百度浏览器如何管理插件 百度浏览器插件管理方法
北京的网站制作公司有哪些,哪个视频网站最好?
如何在自有机房高效搭建专业网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
在线制作视频网站免费,都有哪些好的动漫网站?
制作电商网页,电商供应链怎么做?
浅述节点的创建及常见功能的实现
如何在Windows虚拟主机上快速搭建网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何生成腾讯云建站专用兑换码?
如何在IIS7中新建站点?详细步骤解析
iOS发送验证码倒计时应用
音响网站制作视频教程,隆霸音响官方网站?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Windows Hello人脸识别突然无法使用
想要更高端的建设网站,这些原则一定要坚持!
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何安全更换建站之星模板并保留数据?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
js实现点击每个li节点,都弹出其文本值及修改
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
如何在VPS电脑上快速搭建网站?
如何快速查询域名建站关键信息?
利用JavaScript实现拖拽改变元素大小
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何用已有域名快速搭建网站?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何实现建站之星域名转发设置?
Laravel怎么调用外部API_Laravel Http Client客户端使用
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何用好域名打造高点击率的自主建站?
如何挑选优质建站一级代理提升网站排名?
上一篇:《恋爱记》一起攒钱方法
上一篇:《恋爱记》一起攒钱方法

