spring学习笔记
2022-06-17 13:14:32 0 举报
AI智能生成
spring学习笔记
作者其他创作
大纲/内容
MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。
理解
1、客户端发送请求到前端控制器DispatcherServlet
2、DispatcherServlet根据请求信息寻找映射处理器HandlerMapping,找到处理请求的Controller
3、找到handler后会有HandlerAdapter处理器适配器处理
4、HandlerAdapter调用controller来处理请求
5、请求处理后回返回一个ModelAndView对象
6、视图解析去ViewResolver根据view找到实际的视图view
7、DispatcherServlet将Model传给view进行视图渲染
8、最终把view返回浏览器
springmvc工作原理
SpringMVC
事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败
原子性:事务是不可分割的最小单元,要么所有操作都做,要么所有操作都不做
一致性:在事务开始之前和事务结束以后,数据库所处的状态和它的业务规则是一致的,数据库的完整性没有被破坏
隔离性:在并发数据库操作时,不同的事务拥有各自的数据空间,它们的操作不会对对方产生干扰
持久性:一旦事务提交成功后,事务中所有的数据操作都必须被持久化到数据库中
ACID特性
uncommitted:
committed
repeatableread
serializable:逐个执行
隔离级别
propagation_required
propagation_supports
propagation_mandatory
propagation_requires_new
propagation_not_supported
propagation_never
propagation_nested
spring中事务传播行为
1.定义数据源
2.定义事务管理器
3.定义事务增强
4.使用AOP对切面进行事务增强
XML式
3.开启事务注解驱动
4.在类或方法上使用@Transaction注解
注解式
声明式(基于SpringAOP实现)
改类下的public方法生效
类上
public方法生效
方法上
作用范围
@Transactional
事务管理
能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性
连接点:一些可以被增强的方法
切入点:实际被增强的方法
前置通知
后置
环绕
异常
最终
通知:增强逻辑
切面:是吧通知应用到切入点的动作
术语
jdk Proxy:代理的对象实现了某个接口
cglib:没有实现接口的代理对象
JDK动态代理性能低于CGLib代理
JDK动态代理创建代理对象时比CGLib代理快
如果对象使用的是singleton模式,则建议使用CGLib
比较
原理:基于动态代理proxy
在代理对象上@AspectJ启用
execution()
@annotation()
方法切点函数
args()
@args()
方法入参切点函数
within()
@within()
target()
@target()
目标类切点函数
this()
代理类切点函数
切点表达式:@Pointcut(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")
@Aspect:定义某个类为切面
@Before:前置增强
@AfterReturning:后置增强
@Around:环绕增强
@AfterThrowing:异常抛出增强
@After:Final增强,不管是抛出异常还是正常退出,都会执行增强,一般用于释放资源
@DeclareParents:引介增强
常用注解
Aspectj
AOP
2.它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发
springcore:基础模块,ioc依赖注入功能
Spring AOP :提供了面向切面的编程实现
Spring JDBC : Java数据库连接
Spring Aspects : 该模块为与AspectJ的集成提供支持
Spring JMS :Java消息服务
Spring ORM : 用于支持Hibernate等ORM工具
Spring Web : 为创建Web应用程序提供支持
Spring Test : 提供了对 JUnit 和 TestNG 测试的支持
什么是spring
Bean 代指的就是那些被 IoC 容器所管理的对象
@component
@repository
@service
@controller
类声明为 Bean 的注解
c作用于类上,b作用于方法上
c通过类路径扫描自动装配到spring中
b在方法中定义一个bean,并告诉spring
b比c自定义性强,许多地方直能是有@bean,比如第三方库中的类
@component与@bean的区别
spring:@auteowired
jdk:@resource @inject
注入bean的方式注解
@Autowired 是 Spring 提供的注解,@Resource 是 JDK 提供的注解
Autowired 默认的注入方式为byType(根据类型进行匹配),@Resource默认注入方式为 byName(根据名称进行匹配)。
当一个接口存在多个实现类的情况下,@Autowired 和@Resource都需要通过名称才能正确匹配到对应的 Bean。Autowired 可以通过 @Qualifier 注解来显示指定名称,@Resource可以通过 name 属性来显示指定名称。
@autowired与@resource的
唯一 bean 实例,Spring 中的 bean 默认都是单例的
singleton
每次请求都会创建一个新的 bean 实例
prototype
每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效
request
每一次来自新 session 的 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
session
全局 session 作用域,仅仅在基于 portlet 的 web 应用中才有意义
global-session
bean的作用域
通过构造器创建bean实例
set方法为bean设置属性和其他bean的调用
把bean实例传给bean的后置处理器beanPostProcessor对象的postProcesserBeforeInitialization()方法
调用bean的初始化方法
把bean实例传给bean的后置处理器beanPostProcessor对象的postProcesserAfterInitialization()方法
bean对象可以使用
bean的destory方法
bean的生命周期
spring bean
控制反转
目的:降低耦合
让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖
DI:依赖注入
构造函数注入
属性注入
接口注入(同属性注入,Spring不支持)
注入方式
ClassLoader
Class
Constructor
Method
Field
反射相关类
使用Java反射技术
xml解析
工厂模式
1,在xml配置文件配置创建的对象,2创建工厂类,3在工厂类中xml解析和反射创建对象
实现原理
IOC
spring
收藏
0 条评论
回复 删除
下一页