Spring 框架的基础知识

Spring 框架是由于软件开发的复杂性而创建的,Spring 使用的是基本的 JavaBean 来完成以前只可能由 EJB 完成的事。从简单性、可测性和松耦合性角度而言,绝大部分Java 应用都可以用 Spring。
1、控制反转(Inversion of Control, IOC)
控制反转是一种设计原则,用来降低代码之间的耦合度。在传统的程序设计中,高层模块依赖于低层模块的实现细节,导致高层模块依赖低层模块的实现细节,难以进行单元测试。控制反转负责创建对象、管理对象 (通过依赖注入) 、整合对象、配置对象以及管理这些对象的生命周期。
2、依赖注入
依赖注入是Spring 实现 IOC 的一种重要手段,它将依赖关系从代码中移动到配置文件或容器中,实现了依赖的动态注入。依赖注入主要有三种方式:构造器注入、setter方法注入和接口注入。
3、Bean 的生命周期?
(1) Spring 对bean进行实例化。
(2) Spring将值和bean的引用注入到 bean对应的属性中。
(3) 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法。
(4) 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory()方法,将bean所在的应用引用传入进来。
(5) 如果bean实现了ApplicationContextAware接日,Spring将调用setApplicationContext()方法,将bean所在的应用引用传入进来。
(6) 如果bean实现了BeanPostProcessor 接口,Spring将调用他们的post-ProcessBeforeInitalization()方法。
(7) 如果bean实现了InitializingBean接口,Spring将调用他们的 after-PropertiesSet()方法,类似地,如果bean使用init-method声明了初始化方法,该方法也会被调用。
(8) 如果bean实现了BeanPostProcessor接日,Spring将调用它们的post-ProcessAfterInitialization()方法
(9) 此时, bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用被销毁。
(10) 如果bean实现了 DisposableBean 接口,Spring将调用它的 destory()接口方法,同样,如果 bean 使用 destroy-method 声明了销毁方法,该方法也会被调用。
4、SpringMVC的几个组件?
◆ DispatcherServlet:前端控制器,也叫中央控制器。相关组件都是它来调度。
◆ HandlerMapping:处理器映射器,根据URL路径映射到不同的Iandler。
◆ HandlerAdapter:处理器适配器,按照HandlerAdapter的规则去执行Handler。
◆ Handler :处理器,由我们自己根据业务开发。
◆ ViewResolver:视图解析器,把逻辑视图解析成具体的视图。
◆ View:一个接口,它的实现支持不同的视图类型(freeMaker,JSP等)
5、SpringMVC工作流程:
(1) 用户请求旅程的第一站是 DispatcherServlet。
(2) 收到请求后,DispatcherServlet 调用 HandlerMapping,获取对应的Handler。
(3) 如果有拦截器一并返回。
(4) 拿到Handler后,找到 HandlerAdapter,通过它来访问Handler,并执行处理器
(5) 执行Handler的逻辑。
(6) Handler会返回一个 ModelAndView 对象给 DispatcherServlet
(7) 将获得到的ModelAndView对象返回给DispatcherServlet.
(8) 请求 ViewResolver解析视图,根据逻辑视图名解析成真正的View。
(9) 返回View给 DispatcherServlet。
(10) DispatcherServlet 对View进行渲染视图。
(11) DispatcherServlet 响应用户
5、接口多个实现类调用哪个实现类的三种方案
代码所示:

@Autowired 
private UserService userService 

在这个 UserService 有多个实现类(分别为 UserServiceImplOne、UserServiceImplSecond、UserServiceImplThird)的情况下三种方式定义调用实现类:
方法1:

@Autowired
private UserService userServiceImplOne

在变量名中直接写成想要调用的那个实现类名称,名称规定为首字母小写

方法2
@Primary 注解,标注在实现类上,注解意思:优先使用本类。

方法3
结合使用:
只需要在注⼊的时候,额外通过另外⼀个注解@Qualifier来标识需要注⼊实现类的名字

@Autowired
@Qualifier("userServiceImplOne")
private UserService userService;

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

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

相关文章

jvisualvm工具使用--添加远程监视

jvisualvm简介 jvisualvm该工具位于jdk的bin目录下,是jdk自带的可用于监控线程、内存情况、查看方法的CPU时间和内存中的对 象、已被GC的对象、反向查看分配的堆栈等,即:Java虚拟机监控、故障排查及性能分析工具。 远程监控方法 以windows端…

最小二乘法实践

食堂饭菜价格表如下图所示,采用最小二乘法估算荤菜、素菜、米饭的价格构成,增加一条记录,两荤22元。 提取训练数据: x z 12 y z 14 2x z 22 x y z 18 x 2y z 23 2x y z 26 3x y z 36 代码如下: i…

事件mousePressEvent、paintEvent、closeEvent、keyPressEvent】

事件 mousePressEvent、paintEvent、closeEvent、keyPressEvent 鼠标样式的设置 按WSAD通过keyPressEvent事件移动按钮 通过事件mousePressEvent获取鼠标位置的相对位置,绝对位置 cusor 鼠标样式设置成十字星 .h #ifndef DEFAULTHANDLEREXAMPLE_H #define DEFAUL…

01:单片机开发前的准备工作

单片机开发前的准备工作 1、 开发环境的安装2、创建工程和文件3、编译代码4、下载到单片机 1、 开发环境的安装 第一步:安装KEIL开发软件,按照如下步骤按照软件 第二步:注册KEIL软件 2、创建工程和文件 第一步:先在F盘创建一个文…

取得了PMP证书后有哪些优势?不清楚的快来看!

拿到PMP证书后,个人可以享受到一系列的福利,这些福利主要包括但不限于以下几个方面: 职业发展优势 PMP证书是项目管理领域的全球权威认证,能证明持证者具备系统的项目管理知识和经验。在求职和职业发展过程中,PMP证书…

【基础算法总结】分治—归并

分治—归并 1.排序数组2.交易逆序对的总数3.计算右侧小于当前元素的个数4.翻转对 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.排序数组 …

阶段三:项目开发---民航功能模块实现:任务18:指挥航空公司架次与延误率占比

任务描述 内 容:在前面的“使用Spark清洗统计业务数据并保存到数据库”任务中,已经通过Spark Streaming 清洗程序,将Kafka中Topic为“task_Aftn”的报文数据,经过数据清洗后,保存到了MySQL数据库中;本节任…

LLM 入门与实践(四) Yi 部署与分析

本文截取自20万字的《PyTorch实用教程》(第二版),敬请关注:《Pytorch实用教程》(第二版)无论是零基础入门,还是CV、NLP、LLM项目应用,或是进阶工程化部署落地,在这里都有…

【C++】stack和queue的模拟实现 双端队列deque的介绍

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 🌈前言🔥stack的模拟实现🔥queue的模拟实现🔥deque(双端队列)deque的缺陷 🌈为什么选择…

免费分享:1981-2016全球粮食产量数据集(附下载方法)

了解主要作物的历史产量模式,包括趋势和年际变化,对于了解在粮食需求和气候变化日益增长的情况下粮食生产的现状、潜力和风险至关重要。 数据简介 1981-2016全球粮食产量数据集是农业普查统计(粮农组织报告的国家产量统计数据)和…

Python3极简教程(一小时学完)中

异常 在这个实验我们学习 Python 的异常以及如何在你的代码中处理它们。 知识点 NameErrorTypeError异常处理(try..except)异常抛出(raise)finally 子句 异常 在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关…

多国广播无线电台RadioMaximus Pro 2.33.00

RadioMaximus Pro是一款适用于Windows的程序,可让您收听和录制互联网上数以千计的广播电台。使用RadioMaximus Pro,您可以享受来自世界各地的最多样化的收音机。 RadioMaximus Pro是一款具有录音功能的全功能收音机播放器,您可以同时收听和录制多个电台,创建自动录音时间表…

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友,有可能会被各式各样的黄金交易品种带得眼花缭乱,其实各品种虽然都以黄金作为投资标的物,但是也是各有不同的,下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前,我们要搞清楚…

js逆向研究【响应结果解密思路与案例实战】

什么是响应结果加密 我们在爬虫过程中,抓包之后,针对内容关键词搜索无法定位到数据接口,并在响应的接口内发现有编码/不可读的长字符串等,我们可以判定其为响应结果加密。 如何针对将响应结果还原为可读的数据 如果响应结果有特…

Android平台实现RTSP拉流转发至轻量级RTSP服务

技术背景 我们在做Android平台RTSP转发模块的时候,有公司提出来这样的技术需求,他们希望拉取外部RTSP摄像头的流,然后提供个轻量级RTSP服务,让内网其他终端过来拉流。实际上,这块,大牛直播SDK前几年就已经…

python网络编程-TCP/IP

链路层 帧组成(按顺序): 目标MAC:6B 源MAC:6B 类型:2B 数据:46B-1500B CRC:4B 其中,源MAC为主机网卡地址,类型为来源网络层的数据类型,ipv…

基于Java+SpringMvc+Vue技术智慧校园系统设计与实现--60页及以上论文参考

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

Python 爬虫 tiktok API接口获取tiktok用户关注列表

此接口可获取tiktok用户关注列表。若有需要,请点击文末链接联系我们。 详细采集页面如下https://www.tiktok.com/quanap_official 请求API http://api.xxxx.com/tt/user/following?user_id7252644648840381445&count10&offset0&tokentest 请求参数 返…

雅虎财经世媒讯全球软文发稿对于企业宣发的意义

在当今信息爆炸的时代,企业宣传和品牌推广的方式变得多种多样,其中软文发稿成为了一种颇受欢迎的宣传手段。雅虎作为全球知名的门户网站之一,拥有广泛的用户基础和强大的影响力,通过雅虎进行软文发稿,不仅可以有效提升…

移远BC28_opencpu方案_开发环境搭建

OPEN CPU 代码采用的是 Python 脚本写的 scons 自动化构建工具。从构建这个角度说,它与 GNU make 是同一类的工具。它是一种改进,并跨平台的 gnu make 替代工具,其集成功能类似于 autoconf/automake。 这里给出简单安装方式