SSM之Bean

news2025/2/23 0:04:10

前言

这一节讲bean

1.初始spring

在这里插入图片描述
点projects
在这里插入图片描述
Framework是spring的基础
spring官网
在这里插入图片描述
在这里插入图片描述
这三个主流

2. 系统架构

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

3. 核心概念

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

4. Ioc入门案例

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

其中Dao就是我们原来管理数据库的,service就是业务层
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个代码很简单
要交给spring管理,首先要有一个配置文件
在这里插入图片描述
一开始这里的xml文件是没有spring配置的
我们得先导包才有spring配置

在这里插入图片描述

这样右键创建xml就有spring了
在这里插入图片描述
这样我们就可以拿文件去运行这个bean了,给两个实现类都配置一个bean,那么这个bean就是对象了

在这里插入图片描述
先创建容器,然后就可以在里面根据id获取对象了

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

5. DI入门案例

在这里插入图片描述

DI主要就是搞bean里面类的关系了
BookServiceImpl:
原:
在这里插入图片描述
现在:
在这里插入图片描述
现在我们开始写配置来得到这两个对象的关系

applicationContext.xml:
原:
在这里插入图片描述
现在:
在这里插入图片描述
BookServiceImpl:
在这里插入图片描述
现在业务层一个new都没有了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意那个setBookDao这个方法是容器执行的
在这里插入图片描述

6. bean配置

在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fd90e76bacaa43f99f4aa1f0875782df.png

6.1 bean的别名

现在我们开始写bean的别名
我们用name来起别名,别名之间可以用逗号,分号,空格分隔
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

而且ref那里都可以用其他人的别名
在这里插入图片描述
在这里插入图片描述
对于异常我们要会阅读,只需要阅读异常名就可以了
在这里插入图片描述
在这里插入图片描述

6.2 bean的作用范围

意思就是我们造的对象是单例的还是非单例的

在这里插入图片描述
在这里插入图片描述
这样就可以看出是单例的
如何造出非单例的呢
我们就要用scope属性了
在这里插入图片描述
可以看出默认是第二个属性,所以我们换一个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以bean的作用范围就是控制bean的数量的

7. bean的实例化

7.1 构造方法

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

其实我们这个bean对象的创建,也是会调用对应实体类的构造方法的,而且就算构造方法是私有的,也是会调用的(映射)
但是构造方法有参时就会报错,所以spring调用的构造方法时无参的
在这里插入图片描述

在这里插入图片描述

对于spring的报错信息,我们拉到最后面,看最后的异常
如果这个不行,就倒着看上一个报错信息

在这里插入图片描述
init是构造方法,这个就表示无参的构造方法
在这里插入图片描述
这个就是倒数第二个报错
在这里插入图片描述
在这里插入图片描述

7.2 静态工厂

在这里插入图片描述

这里是一个工厂方法,使用它就可以创建出来
在这里插入图片描述
在这里插入图片描述
这种方式该怎么交给spring管理呢
在这里插入图片描述
这样就可以了
在这里插入图片描述

在这里插入图片描述

这样我们就是通过静态工厂里面的静态方法来实例化bean了
在这里插入图片描述

7.3 实例工厂

意思就是工厂里面的方法不是静态的
在这里插入图片描述
我们先来表演一下普通的运行
在这里插入图片描述

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

    <bean id="bookFactory" class="com.itheima.factory.BookDaoFactory"/>
    <bean id="bookDao" factory-bean="bookFactory" factory-method="getBookDao"/>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我们这个的缺点就是造了一个多余的bean

在这里插入图片描述

现在我们开始改造
我们定义一个新的类BookDaoFactoryBean
然后重写方法,继承泛型接口
在这里插入图片描述
这样我们的配置就变简单了
在这里插入图片描述

我们只需要这样写就可以拿到bean了,而不是工厂对象
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我们这个是单例的,
怎么改非单例呢
我们只需要增加一个重写方法就可
在这里插入图片描述
多的这个方法只需要返回false就是非单例的了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. bean的生命周期

在这里插入图片描述
一共两个阶段,一个是bean创建以后,一个是消亡之前
在这里插入图片描述
现在开始配置,不然不可能平白无故就运行了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里便发现了,destroy没有执行
为什么呢
因为程序执行完了,虚拟机退出了,没有给bean销毁的机会
怎么实现销毁呢,就是在程序结束之前,把这个容器给关闭了

在这里插入图片描述
但是没有这个方法
这是因为ApplicationContext这个接口,不具有这个close方法
而ClassPathXmlApplicationContext是ApplicationContext的一个实现类,它有close方法,这里有很多重继承,所以暂时还不能用
所以改一下类就可以了

在这里插入图片描述
这样就可以了

这个直接关闭的方式比较暴力,我们可以设置关闭钩子,就是告诉虚拟机,你自己退出前关闭一下

        ctx.registerShutdownHook();

加上这句话就可以了
在这里插入图片描述
在这里插入图片描述
close关闭比较暴力,所以我们一般用关闭钩子
因为万一close之后还有执行相应代码呢

下面还有一个对生命周期操作的方法,就是按照spring的套路来
BookServiceImpl:
原:
在这里插入图片描述
在这里插入图片描述
就是对应继承接口,然后实现方法就可以了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样的话就算我们执行dao的代码,也会加载service的,因为都是加载那个配置文件,那么就会加载service的,那么自动执行那两个方法,那么就会打印,但是还是得要关闭钩子,不然也看不见
在这里插入图片描述
在这里插入图片描述
这样我们就知道了
afterPropertiesSet这个方法是在我们属性设置完之后才执行的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看这个我们就知道了为什么afterPropertiesSet在后面执行了
在这里插入图片描述

总结

下一节讲依赖注入

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring循环依赖如何解决的?

一、什么是循环依赖 循环依赖&#xff1a;说白是一个或多个对象实例之间存在直接或间接的依赖关系&#xff0c;这种依赖关系构成了构成一个环形调用。 第一种情况&#xff1a;自己依赖自己的直接依赖 第二种情况&#xff1a;两个对象之间的直接依赖 第三种情况&#xff1a;多个…

Mac vscode 激活列编辑模式

列编辑模式在批量处理多行文本时&#xff0c;非常有效&#xff0c;但 vscode 默认情况下&#xff0c;又没有激活&#xff0c;因此记录一下启动方法&#xff1a; 激活列编辑模式 然后就可以使用 Alt&#xff08;Mac 上是 Option 或 Command 键&#xff09; 鼠标左键 滑动选择了…

【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)

一、 密码应用安全性评估方案 &#xff08;一&#xff09; 密码应用测评工作思路 1.1.1. 测评准备活动的主要任务 1.1.2. 测评准备活动的输出文档 1.2. 方案编制活动 1.2.1. 方案编制活动的主要任务 1.2.2. 方案编制活动的输出文档 1.3. 现场预评估活动 1.3.1. 现场测评…

docker run m3e 配置网络,自动重启,GPU等 配置渠道要点

启动命令&#xff1a; docker run -d --restart always -p 6008:6008 --gpus all --name m3e --network fastgpt_fastgpt stawky/m3e-large-api 配置渠道m3e base url要像我这样填写才行&#xff0c;不然回出问题 模型要选m3e 密钥填&#xff1a;sk-aaabbbcccdddeeefffggghhhi…

OceanBase Shell开放内核运维接口,运维更便捷

DBA在日常业务中面临着繁琐的运维管理任务&#xff0c;亟需高效的工具和灵活的解决方案帮助他们简化操作、提升效率。因此&#xff0c;命令行操作和维护工具&#xff08;CLI工具&#xff09;&#xff0c;因其高效、灵活、可远程管理以及技术深度等特点&#xff0c;成为DBA和开发…

基于MATLAB的混沌序列图像加密程序

设计目的 图像信息生动形象&#xff0c;它已成为人类表达信息的重要手段之一&#xff0c;网络上的图像数据很多是要求发送方和接受都要进行加密通信&#xff0c;信息的安全与保密显得尤为重要&#xff0c;因此我想运用异或运算将数据进行隐藏&#xff0c;连续使用同一数据对图…

SMMU软件指南操作之翻译过程概述

安全之安全(security)博客目录导读 下图展示了每个传入事务&#xff08;transaction&#xff09;所经过的简化过程。本节描述了顶层翻译过程。 一个传入事务遵循以下步骤&#xff1a; 1. 如果 SMMU 被全局禁用&#xff0c;事务将直接通过 SMMU 而不进行任何地址改变。全局属性…

WEB-通用漏洞SQL注入CTF二次堆叠DNS带外

知识点&#xff1a; 1、数据库堆叠注入 根据数据库类型决定是否支持多条语句执行 数据库支持多条语句执行就是堆叠&#xff0c;如&#xff1a; 2、数据库二次注入 应用功能逻辑涉及上导致的先写入后组合的注入 3、数据库Dnslog注入 解决不回显&#xff08;反向连接&#…

基于 DRNN 神经网络整定的 PID 解耦控制

1. 基本原理 DRNN&#xff08;Dynamic Recurrent Neural Network, 动态递归神经网络&#xff09;是一种带有时间反馈的神经网络&#xff0c;能够建模系统的动态特性&#xff0c;适用于非线性、多变量、时变系统的控制。结合 PID 解耦控制&#xff0c;利用 DRNN 进行动态建模和…

【Spring Boot】用 MyBatis 实现数据的 CRUD

用 MyBatis 实现数据的 CRUD 1.创建项目 & 引入依赖2.实现数据表的自动初始化3.实现实体对象建模4.实现实体和数据表的映射关系5.实现增加、删除、修改和查询功能6.配置分页功能6.1 增加分页支持6.2 创建分页配置类 7.实现分页控制器8.创建分页视图 本篇博客将通过 MyBatis…

极坐标气泡图:医学数据分析的可视化新视角

在医学研究中&#xff0c;数据的可视化是至关重要的。它不仅能帮助我们更直观地理解数据&#xff0c;还能揭示数据中隐藏的模式和趋势。今天&#xff0c;我们要介绍一种独特的数据可视化工具——极坐标气泡图&#xff0c;以及它在医学中的重要作用。 什么是极坐标气泡图&#…

Cmakelist.txt之Liunx-rabbitmq

1.cmakelist.txt cmake_minimum_required(VERSION 3.16) ​ project(rabbitmq_linux_test LANGUAGES C) ​ add_library(examples-common OBJECT) target_sources(examples-common PRIVATEutils.hutils.c) if(WIN32)target_sources(examples-common PRIVATE win32/platform_ut…

【AIGC】ChatGPT提示词Prompt解析:拒绝的艺术:如何优雅地说“不“

引言 在人际交往的复杂网络中,学会优雅地拒绝是一种至关重要的社交智慧。很多人往往因为害怕伤害他人的感受,而选择敷衍、拖延或不置可否。 然而,真正的智慧在于如何用尊重和同理心传达"不"的信息。 本文将深入探讨优雅拒绝的艺术,帮助你在维护自身边界的同时,…

《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》

简介&#xff1a;本文详细阐述了 OpenCV 在图像操作中的关键技术&#xff0c;包括缩放&#xff08;确定尺寸缩放与按比例缩放&#xff09;、翻转&#xff08;沿不同轴的翻转方式&#xff09;以及变换&#xff08;平移、旋转、三点确定变换和四点确定变换即透视变换&#xff09;…

蓝桥杯每日真题 - 第21天

题目&#xff1a;(空间) 题目描述&#xff08;12届 C&C B组A题&#xff09; 解题思路&#xff1a; 转换单位&#xff1a; 内存总大小为 256MB&#xff0c;换算为字节&#xff1a; 25610241024268,435,456字节 计算每个整数占用空间&#xff1a; 每个 32 位整数占用…

24小时自动监控,自动录制直播蓝光视频!支持抖音等热门直播软件

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 工具特点📒📝 使用🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 对于许多直播爱好者和内容创作者而言,错过心爱的直播或难以搜集视频素材始终是一个难题。今天,给大家分享的这款工具可以轻松解决这个问题,它拥有…

HCIA考试内容多吗?HCIA数通学什么?

HCIA(Huawei Certified ICT Associate)考试的具体内容因华为公司技术发展与考试更新而有所调整。 一般而言&#xff0c;HCIA考试内容涵盖了计算机网络基础知识、设备配置技巧、网络协议理解、安全与管理实践等方面。 HCIA考试内容有什么 具体而言&#xff0c;HCIA考试内容包…

【MySQL实战45讲笔记】基础篇——深入浅出索引(上)

系列文章 基础篇——MySQL 的基础架构 基础篇——redo log 和 binlog 基础篇——事务隔离 目录 系列文章深入浅出索引&#xff08;上&#xff09;4.1 索引的常见模型4.2 InnoDB 的索引模型4.3 索引维护4.4 思考&#xff1a;为什么要重建索引以及如何做&#xff1f; 深入浅出索…

技术美术百人计划 | 《2.1 色彩空间介绍》笔记

总览 一、色彩发送器 色彩认知&#xff1a; 光源是出生点&#xff0c;光源发射出光线&#xff0c;光线通过直射反射折射等路径最终进入人眼。 但人眼接收到光线后&#xff0c;人眼的细胞产生了一系列化学反应。 由此把产生的信号传入大脑&#xff0c;最终大脑对颜色产生了认…