spring中bean的四种创建方式

news/2024/11/1 12:59:21/

springbean_0">本次分享一下spring中bean的四种创建方式

1. 方式一:普通配置

java"><bean id="myBean" class="cn.cjc.MyBean"> </bean>

2. 方式二:集成静态工厂

java">// 准备静态工厂
public class CarFactory { //静态方法,返回一个对象 public static Car createCar(){ return new Car(); } 
}
<!‐‐factory‐method:代表执行工厂中的方法,会把方法返回的对象设置成一个bean ‐‐> 
<bean id="car" class="cn.cjc.CarFactory" factory‐method="createCar"> </bean>

3. 方式三:简单工厂

java">// 准备简单工厂 
public class CarFactory { //普通方法返回一个对象 public Car createCar(){ return new Car(); } 
}
<!‐‐创建工厂对象‐‐> 
<bean id="carFactory" class="cn.cjc.CarFactory"> </bean> 
<!‐‐调用对应工厂对象中的方法,返回一个bean对象‐‐> 
<bean id="car" factory‐bean="carFactory" factory‐method="createCar" />

4. 方式四:FactoryBean方法

java">//创建FactoryBean对象 //每个FactoryBean对应一个操作类型 
public class CarFactoryBean implements FactoryBean<Car> { //返回的bean对象实例 public Car getObject() throws Exception { return new Car(); }//返回的bean的类型 public Class<?> getObjectType() { return Car.class; }//设置该bean对象是否是单例 public boolean isSingleton() { return true; } }
<!‐‐这里咱们配置的是一个FactoryBean Spring会为当前这个class对象创建一个bean对象出来 同时,还会创建一个对象 该对象的类型由 getObjectType 方法决定 该对象的值由 getObject 方法决定 而方法isSingleton确定它是否是单例 ‐‐> 
<bean id="car" class="cn.cjc.CarFactoryBean"></bean>

完结,撒花!求赞求关注! 有问题可威:c_-j_-c


http://www.ppmy.cn/news/1543584.html

相关文章

gem5运行简单RISC-V全系统模拟

简单记录gem5中运行最简单的RISC-V Full System Simulation的过程 首先是编译RISC-V和m5term&#xff0c;这部分不多写了&#xff0c;官网均有对应教程。 之后直接使用官方在configs/example/gem5_library目录下的riscv-fs.py 运行如下命令 ./build/RISCV/gem5.opt configs/…

java 代码实现sse客户端进行大模型流式推理协议转换

背景 使用 java 语言实现sse协议客户端消息接收&#xff0c;完成大模型流式推理的协议转换。 核心&#xff1a;基于 Spring 5 实现&#xff0c;关键类 WebClient&#xff0c;代码如下&#xff1a; /*** Author ouyangrongtao* Date 2024-05-30 13:54* Description SSE 客户…

.net core 读取 appsettings.json 值

namespace Utility { public class ConfigurationHelper { //先 NuGet:Microsoft.Extensions.Configuration //ConfigurationHelper.Configure(builder.Configuration);//在入口注册&#xff08;写在var app builder.Build();&#xff09;之前 …

【Python】【数据可视化】【商务智能方法与应用】课程 作业一 飞桨AI Studio

作业说明 程序运行和题目图形相同可得90分&#xff0c;图形显示有所变化&#xff0c;美观清晰可适当加分。 import matplotlib.pyplot as plt import numpy as npx np.linspace(0, 1, 100) y1 x**2 y2 x**4plt.figure(figsize(8, 6))# yx^2 plt.plot(x, y1, -., labelyx^2,…

工作流管理是什么?5款企业工作流管理工具推荐!

一、工作流管理 工作流管理是一个被业界广泛应用并迅速发展的技术。它主要是使处理过程自动化&#xff0c;使人以及各种应用工具相互之间协调工作&#xff0c;以完成某项工作。其目的是让合适的人或软件在恰当的时间执行正确的工作。通俗来说&#xff0c;工作流管理就是对业务…

【jvm】所有的线程都共享堆吗

目录 1. 说明 1. 说明 1.是的&#xff0c;JVM中所有的线程都共享堆内存。2.堆内存&#xff08;Heap&#xff09;是JVM管理的内存中最大的一块&#xff0c;用于存储对象实例和数组等动态分配的数据。3.它是Java内存管理中非常重要的一块区域&#xff0c;也是垃圾回收&#xff0…

深入了解 Three.js 中的材质与光照

开发领域&#xff1a;前端开发 | AI 应用 | Web3D | 元宇宙 技术栈&#xff1a;JavaScript、React、ThreeJs、WebGL、Go 经验经验&#xff1a;6年 前端开发经验&#xff0c;专注于图形渲染和AI技术 开源项目&#xff1a;github 晓智元宇宙、数字孪生引擎、前端面试题 大家好&am…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…