Spring框架梳理总结(适合多刷)

article/2025/9/13 2:45:37

目录

  • 前言
  • 大纲总结
  • 1. 概念详解
    • 1.1 IOC与AOP
    • 1.2 IOC与DI
    • 1.3 接口区别
  • 2. 注入方式
    • 2.1 基本类型
    • 2.2 复杂类型
  • 3. 配置属性
  • 4. 注解注入
  • 5. AOP

前言

在看完上一篇文章每个知识点的时候
Spring框架从入门到学精(全)

大部分人对spring还是有些懵懂
可能是知识点比较凌乱所导致
以下这篇文章将带你二刷spring框架
本篇文章主要是理清思路逻辑,有个大纲
学习其细节还需要到上面的文章进行学习

大纲总结

  • IOC方便解耦,简便开发
  • AOP不改变源代码,增加其功能
@Testpublic void testCollection1() {ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");类名 对象名 = context.getBean("对象名", 类名.class);对象名.test();}

1.BeanFactory,只有创建对象才会getBean
2.ApplicationContext是BeanFactory子接口,加载配置就会创建对象
3.ApplicationContext有一些特别的实现类
特别是ClassPathXmlApplicationContext,在src目录下可以写文件名
如果是FileSystemXmlApplicationContext,在src目录下,必须写绝对路径

工厂bean
spring有两种类型,一种是上面的普通bean,另一种是工厂bean
普通bean,在配置文件中,定义的bean类型就是返回类型
而工厂bean返回类型可以不同
1.创建类,让这个类作为工厂bean,实现接口FactoryBean
2.实现接口内的方法,定义返回的bean类型

public class MyBean implements FactoryBean<Course> {//定义返回bean@Overridepublic Course getObject() throws Exception {Course course = new Course();course.setCname("abc");return course;}
}

bean作用域scope
singleton 单实例对象,默认是这个。加载spring配置的时候就会创建对象
prototype 多实例对象。调用getBean方法的时候就会创建对象。

外部属性文件引入
引入context的名称空间,用于jdbc.url等
还有<context:component-scan base-package="com.bao"></context:component-scan>扫描包名

xmlns:context="http://www.springframework.org/schema/context"

注入注解
@Autowired:根据属性类型自动装配
@Qualifier(value=" "):根据属性名称自动注入
@Resource:可根据属性类型或者名称注入
@Value:注入普通类型的注入

切入点切入面
ref为实际增强的类,method为方法名,pointcut-ref为切入点与切入面连接的点

<aop:config><!--切入点--><aop:pointcut id="p" expression="execution(* 全限定名称路径名.buy(..))"/><!--配置切面--><aop:aspect ref="类名"><!--增强作用在具体的方法上--><aop:before method="方法名" pointcut-ref="p"/></aop:aspect>
</aop:config>

事务
事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败

<!--创建事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--注入数据源--><property name="dataSource" ref="dataSource"></property>
</bean>

开启事务注解引入名称空间 tx

<!--开启事务注解-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

没有隔离会发生以下三种情况:脏读、不可重复读、虚(幻)读

脏读:一个未提交事务读取到另一个未提交事务的数据(事件回滚,导致A读取B还未提交的事务,应该读取原始数据)
不可重复读:一个未提交的事务,获取到了一个已经提交修改的事务(A读取B提交的事务,正常来说都提交了才能读取)
幻读:一个未提交的数据获取到了另一个事务添加数据

1. 概念详解

1.1 IOC与AOP

主要的核心是IOC(控制反转)和AOP(动态代理)
而这两个核心也是面试的时候经常问的问题

  • IOC:控制反转,也就是控制权反转,传统的方式自个创建对象以及依赖关系等。反转之后,变成了可以由spring自行创建以及依赖关系的注入。总体来说就是反转对象创建方式,将创建的方式提交给spring也就是程序自已来执行。(以前都是自已去new,现在只需要告诉中介需求,中介给你送过来)

  • AOP:动态代理,实现代码增强的功能,而不会显得冗余复杂
    每个代码模块各司其职,灵活组合,达到一种可配置的、可插拔的程序结构

1.2 IOC与DI

上面讲解了IOC的主要概念,现在开始理清DI的概念区别
IOC的控制反转向spring中索取,也就是向中介管理索取
DI 正是实现 IoC 的方法和手段

一个重要特征是反射,它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入

  • 注入方式: 1.set方式注入 2.构造方法注入 3.字段注入
  • 注入类型: 1.值类型注入 2.引用类型注入

1.3 接口区别

  • BeanFactory,Spring内部使用接口,不提供给开发人员,加载配置xml解析不会创建,只有创建对象才会getBean
  • ApplicationContext是BeanFactory子接口,功能强大,开发人员可使用,加载配置就会创建对象

ApplicationContext有一些特别的实现类

  • ClassPathXmlApplicationContext,在src目录下可以写文件名
  • FileSystemXmlApplicationContext,在src目录下,必须写绝对路径

在这里插入图片描述

2. 注入方式

2.1 基本类型

set方式注入
值类型用value注入
引用类型用ref注入
无参构造
在这里插入图片描述
有参数构造
constructor-arg是有参构造函数的属性
在这里插入图片描述
p名称空间注入
set注入,spring特有,为了简化<property>写法
引用名称空间p
xmlns:p="http://www.springframework.org/schema/p"
在这里插入图片描述
注入其他属性
在这里插入图片描述

2.2 复杂类型

数组注入
在这里插入图片描述

列表注入
在这里插入图片描述
set类型注入
在这里插入图片描述
map类型注入
在这里插入图片描述
注入对象属性
在这里插入图片描述
测试文件
以上读取的测试文件通过获取xml文件
在这里插入图片描述

3. 配置属性

其中主要通过bean来进行配置
具体各个属性概念大致如下

  • bean元素:spring容器管理对象
  • name属性:对象名字,获得对象时getBean(“name值”)
  • class属性:对象的完整类名
  • id属性:与name属性一样,但该id不可重复

spring中的配置属性具体概念如下
本身默认的时候是单实例
通过测试代码也可得知
在这里插入图片描述
所谓的单实例或者是多实例
主要通过配置bean标签内部的scope属性

  • singleton 单实例对象,默认是这个。加载spring配置的时候就会创建对象
  • prototype 多实例对象。调用getBean方法的时候就会创建对象。

还有一个属性是自动装配

bean标签属性autowire,配置自动装配
autowire属性常用两个值:
byName根据属性名称注入 ,注入值bean的id值和类属性名称一样
byType根据属性类型注入

在这里插入图片描述

bean生命周期
具体生命周期的步骤如下
从创建对象到对象销毁的过程

1.为构造器创建bean的实列(无参构造)
2.为bean的属性设置和对其他bean引用(调用set方法)
3.bean初始化配置
4.获取bean
5.销毁bean

4. 注解注入

创建对象提供注解
@Component: 游戏中普通的注解
@Service :业务逻辑层以及Service层
@Controller: 外部层
@Repository :dao层即持久层
功能是一样的,都可以用来创建对象,只不过把每个对象用在不同地方,以便查看

以上都要开启组件扫描
通过context的名称空间
在这里插入图片描述
而且可以通过该标签设置可过滤还是不可过滤的东西
在这里插入图片描述
通过值的注入
@Autowired:根据属性类型自动装配
@Qualifier(value=" "):根据属性名称自动注入
@Resource:可根据属性类型或者名称注入
@Value:注入普通类型的注入
在这里插入图片描述
基于注解类,没有了xml,那么就不是扫描xml文件
而是注解类的函数
主要用法如下
在这里插入图片描述

5. AOP

动态代理,也就是只增强代码部分

基本的概念

  • 连接点:类中有哪些方法可以被增强,这些方法称之为连接点
  • 切入点:实际被增强的方法
  • 通知(增强):实际增强的逻辑部分称之为通知(增强)
  • 通知有多种类型:前置通知、后置通知、环绕通知(前后执行)、异常通知(只有异常才会通知)、最终通知(类似finally)
  • 切面:把通知应用到切入点的过程,是一个动作的过程

主要通过代理类来实现代码增强的功能
两个最主要的类为
在这里插入图片描述

代码截图如下
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/i172Drfa.shtml

相关文章

学习Spring框架这一篇就够了

1. spring概述 1.1 Spring是什么&#xff08;理解&#xff09; Spring是分层的 Java SE/EE应用 full-stack&#xff08;全栈的&#xff09; 轻量级开源框架&#xff0c;以 IOC&#xff08;Inverse Of Control&#xff1a;控制反转&#xff09;和 AOP&#xff08;Aspect Orient…

【QT学习】实现MVC框架的简易封装(一文读懂)

文章目录 前言一、MVC框架简介1.核心部件2.使用目的3.MVC优点 二、具体封装步骤1.文件管理2.创建模型3.创建控制器4.MVC实现&#xff08;用户登录验证为例&#xff09; 总结 前言 MVC&#xff08;Model-View-Controller&#xff09;框架作为一种软件设计模式&#xff0c;已经被…

MVC框架以及实例

MVC框架 MVC(model,view,controller),一种将业务逻辑、数据、界面分离的方法组织代码的框架。在改进界面及用户交互的同时&#xff0c;不需要重写业务逻辑。MVC将传统的输入、处理和输出分离。 Model:模型&#xff0c;逻辑部分&#xff0c;也是表示应用程序的核心&#xff0c;比…

MVC框架流程图

MVC框架流程图 MVC的概念其实就那么简单&#xff0c;这些概念其实早已深入我们的内心&#xff0c;而我们所缺乏的是将其本质挖掘出来。我们来看看下面这幅图&#xff0c;这是一副流行了很多年的讲述MVC模型的图&#xff1a; 在这幅图中&#xff0c;MVC三个框框各司其职&#x…

了解MVC模式与MVC框架

MVC MVC的概念模型(Model)控制器(Controller)视图(View) MVC工作流程Java MVC框架Struts1框架Struts2框架Spring MVC框架JSF框架Tapestry框架 MVC的概念 MVC全名是Model View Controller&#xff0c;M是指数据模型&#xff0c;V是指用户界面&#xff0c;C是控制器。使用MVC最直…

Qt5 MVC框架

1、MVC 设计模式 起源于smalltalk的一种与用户界面设计相关的设计模式。 作用&#xff1a;实现数据与用户界面分离&#xff1b; 组成&#xff1a;模型model(表示数据)、视图view&#xff08;表示用户界面&#xff09;及控制controller&#xff08;定义了用户在界面上的操作&am…

MVC框架概述

2014.11.8我们完成为时两月的中级软考准备,没有多余的时间去放松、娱乐,紧接着迎来了我进入提高班以来真正的一次项目实践--高效平台。 我做的是基础系统,就是一个算是幕后英雄的角色吧!考试系统、评教系统需要我们的数据、同时新生入学系统由我们来维护,所以说任务艰巨而…

C# .Net MVC框架实现最简单的登陆

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言C#.net实现最简单登陆 一、C#,.net是什么&#xff0c;相比较于C,java二、C# .net创建一个MVC框架工程1.步骤 实现结果 前言 C#.net实现最简单登陆 提示&#…

ASP.NET - MVC框架及搭建教程

一、MVC简介 MVC&#xff1a;Model-View-Controller&#xff08;模型-视图-控制器&#xff09;&#xff0c;MVC是一种软件开发架构模式。 1、模型&#xff08;Model&#xff09; 模型对象是实现应用程序数据域逻辑的应用程序部件。 通常&#xff0c;模型对象会检索模型状态并…

PHP实现简易的MVC框架

目录 一、前言二、哪些框架使用到了mvc架构&#xff1f;三、框架结构简介四、框架实现第一步&#xff08;解析路由&#xff09;4.1 写入口文件4.2 定义Core核心类 五、框架实现第二步&#xff08;MVC的实现&#xff09;5.1 控制器的实现5.2 视图的实现5.3 模型的实现 六、总结 …

Unity MVC框架之见解

Unity MVC框架之见解 MVC框架认识构架图案例无框架&#xff0c;普通逻辑代码脚本主UI脚本角色UI脚本摄像机显示脚本脚本的放置 MVC框架的运用Model脚本View脚本主界面的View脚本角色View脚本 Controller脚本主界面的Controller脚本角色Controller脚本 控制主界面的显示脚本脚本…

asp.net mvc框架

#mvc基础 &#xff08;model view controller&#xff09; 是模型—视图—控制器的缩写&#xff0c;一种用于开发web应用程序的软件架构模式&#xff0c;用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化…

MVC框架简介

MVC的全拼为Model-View-Controller&#xff0c;最早由TrygveReenskaug在1978年提出&#xff0c;是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式&#xff0c;是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到…

PHP笔记-自定义MVC框架

膜拜 膜拜下黑马大佬程序员的项目&#xff0c;学习到了这样的手写MVC框架的方式&#xff0c;受益匪浅&#xff0c;感觉自己在C/C和Java方面&#xff0c;还有许多要学习的地方&#xff0c;看看能不能抄下这个php自己撸一个C/C的MVC框架。 下面记录下PHP自定义MVC框架。 项目结…

搭建一个简单的MVC框架

背景 为何要用MVC框架&#xff1f;首先我们知道不用框架的话&#xff0c;在javaweb项目中每个请求都要写一个servlet&#xff0c;并且要在web.xml中对每个servlet类的映射作配置&#xff0c;不方便开发&#xff0c;因此引入MVC框架。 工作原理 简单的说MVC框架就是为了简化开…

Android MVC框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、MVC是什么&#xff1f;二、写个简单的例子1.bean2.callback3.interfaces4.model5.ui 优缺点总结 前言 提示&#xff1a;很多教程讲解框架感觉都像说天书一…

MVC框架之SpringMVC

简介 Spring MVC 是 Spring 给我们提供的⼀个⽤于简化 Web 开发的框架。在说Spring MVC前&#xff0c;我们需要了解下什么是MVC架构以及三层架构&#xff1f; 1 MVC 体系结构 三层架构 在 JavaEE 开发中&#xff0c;⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中&…

MVC架构简单介绍

一&#xff1a;MVC架构简介 MVC是Model&#xff08;模型&#xff09;view&#xff08;视图层&#xff09;controller&#xff08;控制器&#xff09;这三者的缩写。 在百度百科中是这样介绍的&#xff1a;MVC强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成…

MVC框架详解(资源整理)

一、什么是MVC&#xff1f; MVC是三个单词的首字母缩写&#xff0c;它们是Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;和Controller&#xff08;控制&#xff09;。 1、视图 视图(View)代表用户交互界面&#xff0c;对于Web应用来说&#x…

MVC框架

MVC框架 MVC框架——一个理论框架&#xff01;&#xff01;&#xff01;前言——必看1 经典MVC框架2 经典mvc模式就是jspservletJavaBean3 JavaBean4 实际MVC框架应用5 总结 MVC框架——一个理论框架&#xff01;&#xff01;&#xff01; 注意&#xff1a;mvc框架只是理论上的…