3. 实例化Bean的三种方式

news/2024/4/28 15:58:36/文章来源:https://blog.csdn.net/m0_69954721/article/details/128336909

实例化Bean的三种方式

一、构造方法方式

1.1 BookDaoImpl

package com.lin.dao.daoimpl;import com.lin.dao.BookDao;public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("BookDao的无参构造器");}/*** 数据层实现*/public String queryBooks() {System.out.println("数据层查询书本方法");return "数据层查询书本方法";}
}

1.2 applicationContext.xml配置

   <!--bean标签:表示配置bean,id属性:bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id值唯一class属性:表示给bean定义类型,即配置的bean的全路径类名--><!--方式一:构造方法实例化bean--><bean id="bookDao"  class="com.lin.dao.daoimpl.BookDaoImpl"></bean>

1.3 ConstructorMethodForInstance

package com.lin.beaninstance;import com.lin.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** bean实例化方式一:构造方法方式*/
public class ConstructorMethodForInstance {public static void main(String[] args) {//1.创建IoC容器对象,加载spring核心配置文件ApplicationContext springcontext = new ClassPathXmlApplicationContext("applicationContext.xml");//2 从IOC容器中获取Bean对象(BookDao对象)BookDao bookDao = (BookDao) springcontext.getBean("bookDao");//3 调用Bean对象(BookDao对象)的方法bookDao.queryBooks();}
}

运行结果

image-20221215230042227

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

二、静态工厂方式

2.1 BookDaoStaticFactory静态工厂

package com.lin.factory;import com.lin.dao.BookDao;
import com.lin.dao.daoimpl.BookDaoImpl;public class BookDaoStaticFactory {//静态工厂创建对象public static BookDao getBookDao(){return new BookDaoImpl();}}

2.2 applicationContext.xml配置

 <!--方式二:使用静态工厂实例化bean-->
<bean id="bookDao" class="com.lin.factory.BookDaoStaticFactory" factory-method="getBookDao"></bean>

2.3 关系图

image-20221215225848215

2.4 StaticFactoryForInstance

package com.lin.beaninstance;import com.lin.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** bean实例化方式二:静态工厂方式*/
public class StaticFactoryForInstance {public static void main(String[] args) {//1.创建IoC容器对象,加载spring核心配置文件ApplicationContext springContext = new ClassPathXmlApplicationContext("applicationContext.xml");//2 从IOC容器中获取Bean对象(BookDao对象)BookDao bookDao = (BookDao) springContext.getBean("bookDao");//3 调用Bean对象(BookDao对象)的方法bookDao.queryBooks();}
}

2.4 运行结果

image-20221215230326381

三 、实例工厂方式

3.1 BookDaoFactory工厂类

package com.lin.factory;import com.lin.dao.BookDao;
import com.lin.dao.daoimpl.BookDaoImpl;public class BookDaoFactory {//实例工厂创建对象public BookDao getBookDao(){return new BookDaoImpl();}
}

3.2 applicationContext.xml配置

     <!--方式三:使用实例工厂实例化bean--><bean id="bookDaoFactory" class="com.lin.factory.BookDaoFactory"></bean><bean id="bookDao" factory-bean="bookDaoFactory" factory-method="getBookDao"></bean>

3.3 关系图

image-20221215231354502

3.4 实现FactoryBean<T>方式

定义BookDaoFactoryBean实现FactoryBean

package com.lin.beaninstance;import com.lin.dao.BookDao;
import com.lin.dao.daoimpl.BookDaoImpl;
import org.springframework.beans.factory.FactoryBean;public class BookDaoFactoryBean implements FactoryBean<BookDao> {@Overridepublic BookDao getObject() throws Exception {return new BookDaoImpl();}@Overridepublic Class<?> getObjectType() {return BookDao.class;}
}

applicationContext.xml配置

    <bean id="bookDao" class="com.lin.beaninstance.BookDaoFactoryBean"></bean>

getObjectType() {
return BookDao.class;
}
}


####  applicationContext.xml配置~~~xml<bean id="bookDao" class="com.lin.beaninstance.BookDaoFactoryBean"></bean>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_236340.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据技术Hadoop+Spark】MapReduce之单词计数和倒排索引实战(附源码和数据集 超详细)

源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、统计单词出现次数 单词计数是最简单也是最能体现MapReduce思想的程序之一&#xff0c;可以称为MapReduce版“Hello World。其主要功能是统计一系列文本文件中每个单词出现的次数 程序解析 首先MapReduce将文件拆分成spli…

CRM客户管理系统源码带手机端+Uniapp小程序源码+调试部署视频

一套Java大型CRM客户关系管理源码带手机端和小程序源码&#xff08;带调试部署视频&#xff09; 了解CRM源码更多信息可私信我。 相关技术&#xff1a; 1. 前端&#xff1a;Vue 2. 后端&#xff1a;Spring boot 3. 数据库&#xff1a;MySQL 4.小程序端&#xff1a;UNIAPP …

【JAVA程序设计】基于JAVA Swing的飞机票订票系统-有报告

基于JAVA Swing的飞机票订票系统零、项目获取一、项目简介二、开发环境三、项目结构四、运行截图零、项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 一、项目简介 本项目是基于JAVA Sw…

MindFusion.Diagramming for JavaScript V4.2.4

MindFusion.Diagramming for JavaScript V4.2.4 现在支持使用套索工具进行缩放的多种方式。2022 年 12 月 15 日 - 15:44新版本特征 套索缩放工具- 该控件现在支持使用套索工具进行缩放的多种方式。新的“PanAndModify”行为允许您在鼠标指针悬停在某个项目上或平移视图时进行选…

Ac-GA-K(Ac)-AMC,577969-56-3

Ac- gak (Ac)-AMC&#xff0c;在蛋白酶偶联试验中测量组蛋白去乙酰化酶I类(HDAC 1、2、3和8)和II类(HDAC 6和10)活性的荧光底物。hdac催化Lys脱乙酰生成Ac-GAK-AM。 Ac-GAK(Ac)-AMC, fluorogenic substrate for measuring histone deacetylase class I (HDAC 1, 2, 3, and 8) a…

32-Vue之ECharts-雷达图

ECharts-雷达图前言雷达图特点雷达图的基本实现雷达图的常见效果显示数值区域面积绘制类型完整代码前言 本篇来学习写雷达图 雷达图特点 可以用来分析多个维度的数据与标准数据的对比情况 雷达图的基本实现 ECharts 最基本的代码结构定义各个维度的最大值准备具体产品的数…

深入Java线程池:从设计思想到源码解读

1. 前言 线程池深入详解 2. 初识线程池 我们知道&#xff0c;线程的创建和销毁都需要映射到操作系统&#xff0c;因此其代价是比较高昂的。出于避免频繁创建、销毁线程以及方便线程管理的需要&#xff0c;线程池应运而生。 2.1. 线程池优势 降低资源消耗&#xff1a;线程池…

前端基础_传统Web页面

传统Web页面 传统Web页面就是打开浏览器&#xff0c;整个页面都会打开的应用。例如&#xff0c;笔者的个人网站http://siwei.me就是一个典型的“传统Web应用”&#xff0c;每次单击其中任意一个链接&#xff0c;都会引起页面的整个刷新 传统的页面每次打开&#xff0c;都要把…

谷歌浏览器是最容易受到攻击的

©网络研究院 不幸的是&#xff0c;那些看起来越多&#xff0c;他们发现的越多&#xff0c;这个规则总是适用的&#xff0c;除了来自体育场的无节制的欢呼声。 Windows 比 Linux 更容易受到攻击&#xff0c;因为 Chrome 比 Edge 更容易受到攻击。这也是因为它们是最受欢迎…

详解即时通讯音视频开发实时语音通讯丢包补偿技术

即时通讯应用中的实时音视频技术&#xff0c;几乎是IM开发中的最后一道高墙。原因在于&#xff1a;实时音视频技术 音视频处理技术 网络传输技术 的横向技术应用集合体&#xff0c;而公共互联网不是为了实时通信设计的。 现如今&#xff0c;随着移动互联网越来越普及&#xf…

NLP学习笔记(二) LSTM基本介绍

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲长短期记忆网络 (Long Short-Term Memory, LSTM) 文章行文思路如下&#xff1a; 首先通过循环神经网络引出为啥需要长短期记忆网络然后介绍长短期记忆网络的核心思想与运作方式最后通过简短的代码深入理解长短期记忆网络的…

电子厂测试题——难倒众多主播——大司马也才90分

一、选择题 1、1-2 ( ) A.1 B.3 C.-1 D.-3 2、|1-2|( ) A.1 B.3 C. -1 D.-3 3、1x2x3( ) A.5 B.6 C.7 D.8 4、3643( ) A.29 B.16 C.8 D.3 5、55x5( ) A.15 B.30 C.50 D.125 二、填空题(请填写阿拉伯数字) 6、110100 1000_______ 7、一个三角形砍去1个角&#…

Linux(三) makefile与gdb调试

makefile mkefile文件中定义了一系列的规则来指定&#xff0c;哪些文件需要线编译&#xff0c;哪些后编译&#xff0c;哪些需要重新编译&#xff0c;甚至进行更复杂的功能操作&#xff0c;因为makefile就像一个Shell脚本一样&#xff0c;其中也可以执行操作系统的命令。 mkef…

硬件需知知识 -- 基本元件(电阻)

一、电阻 1.1 贴片电阻 1.1.1 贴片电阻的封装大小是和功率时相关的。 封装大小功率(W)0201120\frac{1}{20}201​0402116\frac{1}{16}161​0603110\frac{1}{10}101​080518\frac{1}{8}81​12060.2518120.5或1201012\frac{1}{2}21​25121或者21.1.2 贴片电阻读数 贴片电阻的读数…

Ac-EEVVAC-pNA,389868-12-6

Ac-EEVVAC-pNA, chromogenic substrate for a continuous spectrophotometric assay of HCV NS3 protease. The sequence EEVVAC is derived from the 5A-5B cleavage junction of the HCV polyprotein. Ac-EEVVAC-pNA, HCV NS3蛋白酶连续分光光度法测定的显色底物。EEVVAC序列…

新冠病毒:KN95(GB2626类型口罩)是否有效阻挡?

点击上方“青年码农”关注回复“源码”可获取各种资料​今天刷新闻&#xff0c;看到很多官方账号发布&#xff0c;只有五种编码口罩能防疫&#xff0c;分别是医用防护口罩&#xff08;GB19083-2010&#xff09;医用外科口罩&#xff08;YY0469-2011&#xff09;一次性使用医用口…

带有匹配滤波器的雷达信号调制和脉冲压缩Matlab仿真

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 匹配滤波器&#xff1a; 匹配滤波器是输出端的信号瞬时功率与噪声平均功率的比值最大的线性滤波器也就是说有最大的信噪比。其滤波器的传递函数形式是信号频谱的共轭。在通信系统中&#xff0c;滤波器是其中重…

微服务框架 SpringCloud微服务架构 多级缓存 47 Lua 语法入门 47.3 条件控制、函数

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存47 Lua 语法入门47.3 条件控制、函数47.3.1 函数47.3.2 条件控制47 Lua 语法入门 47.3 条件控制、函数…

【图像融合】DCT域多焦点图像融合【含Matlab源码 1973期】

⛄一、基于DCT变换的图像融合算法简介 在图像融合过程中,最主要的就是如何提取低高频系数以及低高频系数的融合准则。基于DCT变换的图像融合算法原理如图2所示。 图2 DCT融合算法原理 算法步骤如下。 步骤1精确配准待融合的源图像。 步骤2采用分块的方法将参与融合的每幅大小…

【Java版oj】逆波兰表达式求值

目录 一、原题再现 二、问题分析 三、完整代码 一、原题再现 150. 逆波兰表达式求值 有效的算符包括 、-、*、/ 。每个运算对象可以是整数&#xff0c;也可以是另一个逆波兰表达式。 注意 两个整数之间的除法只保留整数部分。 可以保证给定的逆波兰表达式总是有效的。换句话…