当前位置: 首页 > news >正文

java-spring_bean实例化

  • bean是如何创建的实例化bean的三种方式
    • 构造方法
    • 静态工厂(了解)
    • 实例工厂与FactoryBean
      • 实例工厂
      • FactoryBean

bean是如何创建的实例化bean的三种方式

构造方法

bean本质上就是对象,创建bean使用构造方法完成
提供可访问的构造方法

public class BookDaoimpl implements BookDao {private BookDaoimpl() {System.out.println("book dao constructor is running...");}public void save(){System.out.println("user dao save...");}
}

配置

<bean id="bookDao" class="com.dao.impl.BookDaoimpl"/>

无参构造方法如果不存在,将抛出异常BeanCreationException

在这里插入图片描述
在这里插入图片描述

静态工厂(了解)

静态工厂

public class OrderDaoFactory {public static OrderDao getOrderDao(){return new OrderDaoimpl();}
}

配置注意配置的工厂名及方法名

  <bean id="orderDao" class="com.dao.factory.OrderDaoFactory" factory-method="getOrderDao"/>

实例工厂与FactoryBean

实例工厂

public class UserDaoFactory {public UserDao getUserDao() {return new UserDaoImpl();}
}

配置(先配置工厂的bean并使用factory-bean指定工厂bean)配合使用实际无意义方法名不固定每次需要配置

		<bean id="userFactory" class="com.dao.factory.UserDaoFactory"/><bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>

FactoryBean

FactoryBean(务必掌握)

public class UserDaoFactoryBean implements FactoryBean<UserDao> {@Overridepublic UserDao getObject() throws Exception {return new UserDaoImpl();}@Overridepublic Class<?> getObjectType() {return UserDao.class;}}

配置

 <bean id="userDao" class="com.dao.factory.UserDaoFactoryBean"/>

FactoryBean默认为单例如果要改非单例需要加上isSingleton返回值true为单例false为非单例

public class UserDaoFactoryBean implements FactoryBean<UserDao> {//代替原始实例工厂中创建对象的方法@Overridepublic UserDao getObject() throws Exception {return new UserDaoImpl();}@Overridepublic Class<?> getObjectType() {return UserDao.class;}@Overridepublic boolean isSingleton() {return false;}
}

相关文章:

java-spring_bean实例化

bean是如何创建的实例化bean的三种方式构造方法静态工厂&#xff08;了解&#xff09;实例工厂与FactoryBean实例工厂FactoryBeanbean是如何创建的实例化bean的三种方式 构造方法 bean本质上就是对象&#xff0c;创建bean使用构造方法完成 提供可访问的构造方法 public clas…...

微信中如何接入机器人才比较安全(不会收到警告或者f号)之第三步正式接入

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 前面两篇文章分别介绍了下chatgpt接入方式: 微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信 微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第二步注入dll文件…...

高通平台开发系列讲解(Sensor篇)IAM20680驱动程序的使用

文章目录 一、相关编译宏二、设备树配置三、打开iio自动挂载脚本四、模块加载验证沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 IAM20680 驱动程序。 一、相关编译宏 目录:arch/arm/configs CONFIG_IIO_BUFFER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_II…...

【VictoriaMetrics】VictoriaMetrics集群伪分布式部署(二进制版)

VictoriaMetrics支持单机版以及集群版部署,通常情况下,官方建议使用单节点版本,而不是集群版本,如果摄取速率低于每秒一百万个数据点,单节点版本可以完美地扩展CPU内核、RAM和可用存储空间的数量。与集群版本相比,单节点版本更容易配置和操作,因此在选择集群版本之前要三…...

华为手表开发:WATCH 3 Pro(7)获取电量信息

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;7&#xff09;获取电量信息初环境与设备文件夹&#xff1a;文件新增第二页面showBatteryInfo.hmlshowBatteryInfo.js修改首页 -> 新建按钮 “ 跳转 ”index.hmlindex.js 引用包&#xff1a;system.router首页效果点击结果初…...

【数据结构】动态顺序表的接口实现(附图解和源码)

动态顺序表的接口实现&#xff08;附图解和源码&#xff09; 文章目录动态顺序表的接口实现&#xff08;附图解和源码&#xff09;前言一、定义结构体二、每一个接口的实现原理&#xff08;附图解&#xff09;1.初始化顺序表2.增容顺序表3.尾插数据4.删除顺序表信息&#xff08…...

L2-003 月饼

月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的情形是这样的&#…...

volatile不等于原子操作

volatile作用 确保数据每次都从源头读取&#xff0c;即每次都从内存中读取&#xff0c;不从缓存中读取。 这样做的目的是确保不会被优化 int i 0;int main(int argc, char **argv) {const char *str;if (i 0) {str "hello";} else {str "world";}ret…...

每天10个前端小知识 【Day 15】

&#x1f469; 个人主页&#xff1a;不爱吃糖的程序媛 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域新星创作者、CSDN内容合伙人&#xff0c;专注于前端各领域技术&#xff0c;成长的路上共同学习共同进步&#xff0c;一起加油呀&#xff01; ✨系列专栏&#xff1a;前端…...

异构数据库同步方案

目录 1 概述 2 原理 3 参数 1 概述 将企业生产系统产生的业务数据实时同步到大数据平台&#xff0c;通过对业务数据的联机实时分析&#xff0c;快速制定或调整商业计划&#xff0c;提升企业的核心竞争力。 依据同步数据是否需要加工处理&#xff0c;采用不同的技术方案&am…...

MySQL-系统信息函数

获取 MySQL 版本号的函数VERSION()例&#xff1a;返回当前mysql版本信息mysql> select version(); ----------- | version() | ----------- | 5.7.40 | ----------- 1 row in set (0.01 sec)查看当前用户的连接数的ID函数CONNECTION_ID()例1&#xff1a;查看当前用户连接…...

Windows环境下使用Pycharm运行sh文件

博主在调试一些程序时&#xff0c;时常遇到 .sh文件&#xff0c;这是Linux中的shell脚本文件&#xff0c;那么这种文件在windows下如何运行呢&#xff0c;其实我们可以通过git来实现&#xff0c;接下来看我操作。 首先我们需要安装Git&#xff0c;关于其安装过程可以参考博主这…...

Flutter启动流程浅析

一&#xff0c;Mixins1&#xff0c;定义&#xff1a;Mixins 是一种在多个类层次结构中重用类代码的方法。个人理解&#xff1a;就是一个类&#xff0c;这个类有一些方法&#xff0c;其他类可以在不继承这个类的情况下使用这个类的方法。2&#xff0c;几个关键词&#xff08;1&a…...

004:NumPy的应⽤-2

数组的运算 使⽤NumPy 最为⽅便的是当需要对数组元素进⾏运算时&#xff0c;不⽤编写循环代码遍历每个元素&#xff0c;所有的运算都会⾃动的⽮量化&#xff08;使⽤⾼效的、提前编译的底层代码来对数据序列进⾏数学操作&#xff09;。简单的说就是&#xff0c;NumPy 中的数学运…...

一文了解JAVA中同步、异步、阻塞和非阻塞

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;JAVA中同步、异步、阻塞和非阻塞 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加…...

查询股票交易日接口可以用C++实现查询当日成交吗?

用查询股票交易日接口可以自行查询各大交易网站或交易所的股票历史数据及行情数据&#xff0c;也可以用它 查询当日成交数据&#xff01; 接下来小编就来分享一下用C实现查询当日成交代码&#xff1a; std::cout << " 查询当日成交: category 3 \n"; categ…...

java中常见的json库以及对应的用法

一、常见的json库 1、Jackson: Jackson是一个高性能、灵活性强的JSON库&#xff0c;提供了丰富的API&#xff0c;支持JSON和XML的数据解析和生成。它支持对Java对象进行序列化和反序列化&#xff0c;可以处理复杂的JSON格式数据。 导入的依赖 https://mvnrepository.com/ &…...

德赛西威NAV75*-SV731*导航升级(凯立德J30)实战

一、前言&#xff1a;升级导航德赛西威&#xff08;2015年买的&#xff09;地图几年没升级过了&#xff08;之前自己折腾了一个&#xff09;之前的启动是DSA2013&#xff08;电子G已经无法升级数据文件了&#xff0c;本次只升级地图J30图资-凯立德&#xff09;主程序版本&#…...

[USACO2023-JAN-Bronze] T1 LEADERS 题解

一、题目描述Farmer John 有 N 头牛 (2≤N≤10^5)。 每头牛有对应的品种&#xff1a;Guernsey or Holstein. 按照惯例&#xff0c;这些牛站成一排&#xff0c;编号从1到N。在某一天&#xff0c;每头牛写了一个数字, 第i头牛写的数字Ei明确地表示了一个范围&#xff0c;表示范围…...

第二章:unity性能优化之drawcall优化-1

目录 前言&#xff1a; 一、什么是drawcall 二、如何合批 1、什么是合批&#xff1f; 2、静态批处理 1、什么是静态批处理&#xff1a; 2、静态合批的规则 3、动态批处理 4、GPU Instancing 1、GPU instancing的定义 2、编写支持GPU instancing Shader步骤 5、…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...