0306spring--复习
一,spring是什么
Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架
理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架
优点:
弊端:违背了原有的技术理念:配置太过繁琐,被称为“配置地狱”
二,Spring框架由七个定义明确的模块组成
三,现代化的开发就是基于spring容器的开发,
1.springboot :一个快速开发的脚手架
约定大于配置
2.springcloud:
springCloud是基于SpringBoot实现的
四,控制反转和面向切面
IOC:(获得依赖对象的方式反转了,对象由spring来创建,管理和装配)
1.控制反转:从本质上解决了问题,使我们程序员不用再去管理对象的创建了
系统的耦合性大大降低,可以更专注于业务的实现(IOC的原型)
1)以前:程序是需要程序员主动创建对象,控制权在开发人员手上
2)使用了set方法,程序不再具有主动性,而是变成了被动的接受对象,主动权在用户手上
3)配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
ref: 引用Spring容器中创建好的对象
value:具体的值,基本数据类型
4)IOC创建对象的方法:
1.默认使用无参构造创建对象
2. 手动配置有参构造:constructor
1)下标赋值:index
2)通过类型创建(不建议)
3)通过参数名:name
5)在配置文件加载的时候,容器中管理的对象就已经初始化了,(容器类似于婚介所,只有对象注册到了婚介所,当容器applicationcontext被创建,被管理的对象也就存在,也就是被初始化了)
五,spring的配置
1.别名:
alias:----->如果添加了别名,我们也可以通过别名获取对象
2.Bean的配置:
id:bean的唯一标识符,也就是相当于我们的对象名
class:bean的全限定名“包名+类名”(bean对象所对应的全限定名)
name: 也是别名:而且name比alias更高级,可以同时取多个别名(逗号或空格或分号分割)
ref:引用Spring容器中创建好的对象
value:具体的值,基本数据类型
3.import:
1)这个import,一般用于团队开发,可以将多个配置文件,导入合并为一个
2)假设项目中有多个人开发,这三个人负责不同类的开发,不同类需要注册到不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的
张三:beans
李四:beans2
王五:beans3
applicationContext.xml:
<import resource="beans.xml"/>
<import resource="beans2.xml"/>
<import resource="beans3.xml"/>
使用的时候,直接使用总的配置就好了
六,DI依赖注入
1.构造器注入:
2.通过set方式注入
依赖注入:set注入
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性,由容器来注入
环境搭建:
1.复杂类型
2.真实测试对象
<bean id="student" class="com.kuang.pojo.Student"><!--第一种,普通注入--><property name="name" value="小俊"/><!--第二种:bean注入,ref--><property name="address" ref="address"/><!--第三种:,数组注入--><property name="books"><array><value>红楼梦</value><value>西游记</value><value>水浒传</value><value>三国演义</value></array></property><!--第四种:list--><property name="hobbys"><list><value>听歌</value><value>王者</value><value>跳舞</value></list></property><!--第五种:map--><property name="card"><map><entry key="身份证" value="1234543234543234"/><entry key="银行卡" value="3ueqrqyrqoyrqywqo"/></map></property><!--第六种:set--><property name="games"><set><value>LOL</value><value>COC</value><value>BoB</value></set></property><!--第七种:null--><property name="wife"><null/></property><!--第八种:properties--><property name="info"><props><prop key="学号">190970070</prop><prop key="性别">男</prop><prop key="姓名">小俊</prop></props></property></bean>
3.其他方式注入
注意:这两种不能直接使用,需要去导入约束,从官方文档去拿
1)p命名注入 xmlns:p="http://www.springframework.org/schema/p"
2)c命名注入 xmlns:c="http://www.springframework.org/schema/c"
<!--p命名空间,可以直接注入属性的值-->
<bean id="user" class="com.kuang.pojo.User" p:name="小俊" p:age="18"/>
<!--c命名空间,通过构造器注入:construct-args-->
<bean id="user2" class="com.kuang.pojo.User" c:age="18" c:name="小俊俊"/>
4.bean的作用域:

1)单例模式:singleton:
spring 默认机制
<bean id="user2" class="com.kuang.pojo.User" c:age="18" c:name=" 小俊俊" scope="singleton"/>
2)原型模式:prototype:
每次从容器中get的时候,都会产生一个新对象
3)其他的在web中才用到
七.Bean的自动装配
自动装配是spring满足bean依赖的一种方式
spring会在上下文中自动寻找,并自动给bean装配属性
三种装配在方式:
1)在xml中显示的配置
2)在java中显示的配置
3)隐式的自动装配bean(重要)
1.byName自动装配
byName会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanID
<bean id="people" class="com.kuang.pojo.People" autowire="byName"><property name="name" value="小俊俊呀!"/></bean>
2.byType自动装配
byName会自动在容器上下文中查找,和自己对象属性类型相同的beanID
<bean id="people" class="com.kuang.pojo.People" autowire="byType"><property name="name" value="小俊俊呀!"/></bean>
小结:
- byname的时候:需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法值一致
- byname的时候:需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型值一致
相关文章:
0306spring--复习
一,spring是什么 Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架 理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架 优点࿱…...
动手实现一遍Transformer
最近乘着ChatGpt的东风,关于NLP的研究又一次被推上了风口浪尖。在现阶段的NLP的里程碑中,无论如何无法绕过Transformer。《Attention is all you need》成了每个NLP入门者的必读论文。惭愧的是,我虽然使用过很多基于Transformer的模型&#x…...
【Flutter入门到进阶】Flutter基础篇---弹窗Dialog
1 AlertDialog 1.1 说明 最简单的方案是利用AlertDialog组件构建一个弹框 1.2 示例 void alertDialog(BuildContext context) async {var result await showDialog(barrierDismissible: false, //表示点击灰色背景的时候是否消失弹出框context: context,builder: (context)…...
【操作系统】进程和线程的区别
文章目录1. 概述2. 进程3. 线程4. 协程5. 进程与线程区别1. 概述 进程和线程这两个名词天天听,但是对于它们的含义和关系其实还有点懵的,其实除了进程和线程,还存在一个协程,它们的关系如下: 首先,我们需要…...
Linux开发环境配置--正点原子阿尔法开发板
Linux开发环境配置–正点原子阿尔法开发板 文章目录Linux开发环境配置--正点原子阿尔法开发板1.网络环境设置1.1添加网络适配器1.2虚拟网络编辑器设置1.3Ubuntu和Windows网络信息设置Ubuntu网络信息配置方式:1.系统设置->网络->选项2.配置网络文件2源码准备2.…...
Android ThreadPoolExecutor的基本使用
ThreadPoolExecutor是Java中的一个线程池类,Android中也可以使用该类来管理自己的线程池,它为我们管理线程提供了很多方便。 线程池是一种能够帮助我们管理和复用线程的机制,它可以有效地降低线程创建和销毁的开销。使用线程池可以避免不必要…...
基于区域生长和形态学处理的图像融合方法——Matlab图像处理
✅ 大三下时弄的 文章目录最终效果图摘要1 研究背景及意义2 基本原理描述3 实验数据来源3.1 原始图像的来源3.2 天空背景图像的来源4 实验步骤及相应处理结果4.1 原始图像的预处理4.2 区域生长法分割图像4.3 形态学处理填充孔洞4.4 边缘检测根据二值图像构造RGB图像4.5 图像拼接…...
三个案例场景带你掌握Cisco交换机VLAN互通
VLAN间路由的方式现在主流的组网主要是依靠三层交换机通过配置SVI接口【有的厂商叫VLANIF接口】,当然也有比较小型的网络,它就一个出口路由器可管理的二层交换机,还有一种更加差的,就是出口路由一个可管理的二层交换机,…...
小白入门之持久连接与非持久连接的差别
对比 HTTP 0.9 已过时 HTTP1.0:非持续连接,每个连接只处理一个请求响应事务,有些服务器端甚至还在用此,可以在一定时间内复用连接,具体复用时间的长短可以由服务器控制,一般在15s左右。 HTTP 1.1 默认使用持…...
TypeScript篇.01-简介,类,接口,基础类型
1.简介(1)安装及编译安装: npm install -g typescript创建 .ts 后缀名的文件编译: tsc 文件名.ts 编译后会生成同名 .js 的文件查看: 在html文件中script引入js文件,运行查看控制台即可(2)类型注解TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式 变量或函数声…...
分享几种WordPress怎么实现相关文章功能
一淘模板(56admin.com)给大家介绍一下WordPress代码实现相关文章的几种方法,希望对大家有所帮助! WordPress很多插件可以实现相关文章的功能,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响…...
PANGO的IOB的电平能力那些事
LVCMOS33 如果要使用33电平,VCCIO则必须供电3V3. 在此制式下,VILMAX为0.8V,VIHMIN为2.0V,即,电平处于0.8V到2.0V之间时,处于浮游态。 VOLMAX是0.4V,VOHMIN是VCCIO-0.4V,折算下来&am…...
scrpy学习-02
新浪微博[Scrapy 教程] 3. 利用 scrapy 爬取网站中的详细信息 - YouTubedef parse(self,response):soup BeautifulSoup(response.body,html.parser)tags soup.find_all(a,hrefre.compile(r"sina.*\d{4}-\d{2}-\d{2}.*shtmls"))#匹配日期for tag in tags:url tag.get(…...
MySQL运维篇之Mycat分片规则
3.5.3、Mycat分片规则 3.5.3.1、范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。 示例: 可以通过修改autopartition-long.txt自定义分片范围。 注意: 范围分片针对于数字类型的字段,…...
vue router elementui template CDN模式实现多个页面跳转
文章目录前言一、elementui Tabs标签页和NavMenu 导航菜单是什么?二、使用方式1.代码如下2.页面效果总结前言 写上一篇bloghttps://blog.csdn.net/jianyuwuyi/article/details/128959803的时候因为整个前端都写在一个index.html页面里,为了写更少的代码…...
ElasticSearch - ElasticSearch基本概念及集群内部原理
文章目录1. ElasticSearch的应用场景01. Elasticsearch 是什么?02. 为何使用 Elasticsearch?03. Elasticsearch 的用途是什么?04. Elasticsearch 的工作原理是什么?05. Elasticsearch 索引是什么?06. Logstash 的用途是…...
【反射中,Class.forName和ClassLoader区别】
在Java中,可以使用反射机制来获取类的信息并动态地创建对象。其中,Class是Java反射机制中的重要类,表示一个类的信息。 Class.forName()和ClassLoader都可以用于获取类的Class对象,但它们之间存在一些差别: 1、是否会…...
2023了为什么还有人在问:女生适合做跨境电商吗?
女生适合做跨境电商吗?这是东哥最近咨询里面问最多的,今天东哥就给大家解答一下你们内心的疑惑,虽然代表的是东哥我自己的观点,但我觉得还是很值得深思的。 女生适合做跨境电商吗? 性别并不是决定一个人是否适合从事跨…...
磁盘分区和挂载
磁盘分区和挂载一、linux分区1.原理介绍2.分区和文件关系示意图:3.硬盘说明二、linux分区1.查看所有设备挂载情况三、挂载案例1.使用lsblk命令查看2. 虚拟机硬盘分区3.虚拟机硬盘分区格式化4.mount挂载 重启挂载失效4.1挂载名词解释4.2注意事项4.3挂载4.4挂载非空目…...
电子技术——晶体管尺寸
电子技术——晶体管尺寸 在本节我们介绍关于IC设计的一个重要的参数晶体管尺寸(例如长度和长宽比)。我们首先考虑MOS反相器。 反相器尺寸 为了说明 (W/L)(W/L)(W/L) 的尺寸大小以及 (W/L)p(W/L)_p(W/L)p 和 (W/L)n(W/L)_n(W/L)n 的比例问题对于MO…...
IndexTTS 2.0情感控制效果:用自然语言描述生成对应语气语音
IndexTTS 2.0情感控制效果:用自然语言描述生成对应语气语音 1. 引言:语音合成的革命性突破 想象一下这样的场景:你正在制作一部动画短片,主角需要说一句"我受够了!"——但你不只是想让它"说出来"…...
ComfyUI-Manager终极指南:10个技巧助你快速掌握AI绘图插件管理
ComfyUI-Manager终极指南:10个技巧助你快速掌握AI绘图插件管理 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI-Manager是一款专为AI绘图工具ComfyUI设计的插件管理神器,能够帮助用户轻…...
Python AOT编译面试通关手册(仅限2026 Q1–Q3内推通道开放期|含6家头部公司真实压轴题及参考实现)
第一章:Python AOT编译技术演进与2026面试全景图Python 长期以来以解释执行和 JIT(如 PyPy)为主流,但面向云原生、边缘计算与安全敏感场景,AOT(Ahead-of-Time)编译正加速进入主流视野。从早期的…...
突破Unity游戏语言壁垒:XUnity Auto Translator的多维度解决方案
突破Unity游戏语言壁垒:XUnity Auto Translator的多维度解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在全球化游戏市场中,语言差异已成为制约玩家体验的关键瓶颈。独立…...
终极指南:使用golang-migrate轻松管理数据库视图与存储过程
终极指南:使用golang-migrate轻松管理数据库视图与存储过程 【免费下载链接】migrate golang-migrate/migrate:这是一个基于Go语言的数据迁移库,适合进行数据库迁移和数据同步。特点包括简单易用、支持多种数据库类型、支持自定义迁移脚本等。…...
告别重复造轮子:用快马一键生成模块化cnn开发模板提升效率
最近在做一个图像分类项目时,发现每次从头搭建CNN模型都要重复写大量模板代码,从数据加载到训练循环,很多环节都是固定套路。经过几次折腾后,终于摸索出一套高效开发方法,今天分享如何用模块化思维提升CNN开发效率。 数…...
Gear-Lib系统抽象层揭秘:POSIX适配与硬件抽象设计思想
Gear-Lib系统抽象层揭秘:POSIX适配与硬件抽象设计思想 【免费下载链接】gear-lib Gear-Lib, C library for IOT Embedded Multimedia and Network 项目地址: https://gitcode.com/gh_mirrors/ge/gear-lib Gear-Lib作为面向物联网嵌入式多媒体与网络的C语言库…...
如何评估企业的敏捷管理能力价值
如何评估企业的敏捷管理能力价值关键词:企业敏捷管理能力、评估价值、敏捷方法、绩效指标、价值驱动因素摘要:本文旨在深入探讨如何评估企业的敏捷管理能力价值。首先介绍了评估的背景,包括目的、预期读者、文档结构和相关术语。接着阐述了敏…...
从数据清洗到游戏开发:C++ std::string替换函数的5个意想不到的妙用
从数据清洗到游戏开发:C std::string替换函数的5个意想不到的妙用 在C开发者的日常工作中,std::string的替换操作常被视为基础技能,但它的潜力远不止于简单的文本处理。当我们将视线投向更广阔的领域——从游戏开发到数据工程,从安…...
VSCode 高效开发:配置 Pixel Dream Workshop 模型调用的代码片段与插件
VSCode 高效开发:配置 Pixel Dream Workshop 模型调用的代码片段与插件 1. 为什么需要优化开发工作流 如果你经常使用Pixel Dream Workshop这类AI模型进行开发,可能会遇到一个共同痛点:每次调用API时都要重复编写相似的请求代码,…...
