没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1. 什么是 Spring
Spring 是一个提供 IOC、AOP 的轻量级容器框架,为 java 程序开发提供基础服务,目的是为
了简化企业级应用软件开发的复杂性,使得开发者更着重于业务。
1、Core Container:核心容器,包括 Core、Bean、Context、Expression Language。Core 和 Bean
为基础功能,提供了 IOC 控制反转和 DI 依赖注入,基础概念 BeanFactory,对 Factory 即工
厂模式的完美实现。
➢ Core 模块主要包含 Spring 框架的核心工具类,Spring 的其他组件基本都要使用到这个包
的类,Core 模块是其他组件的核心。
➢ Beans 模块是所有组件都要使用的模块,包含读取配置文件、创建和管理 Beans 以及控
制反转 IOC 和依赖注入 DI 操作相关的所有类。
➢ Context 模块构建与 Core 和 Beans 基础之上,类似于 JNDI 注册器的框架模式的 Bean 对
象访问模式,Context 继承了 Beans 的特性,为 Spring 的核心提供了大量的扩展,例如
国际化、资源加载、事件传播等。同时支持 J2EE 的一些基础功能,例如 JMX、EJB 和基
础的远程处理。
➢ Expression Language 模块提供了强大的表达式语言,在运行时查询和操作对象。
2、Data Access/Integration:数据集成,包括 ORM、JDBC、JMS、OXM、Transactions。
➢ JDBC 模块提供了一个抽象层,封装了 JDBC 冗长的编码和数据库厂商特有的错误代码。
这个模块包含了 Spring 对 JDBC 数据操作的所有类。
➢ ORM 模块是对象关系映射 API,如 Hibernate、Mybatis 等,提供了对留下 ORM 框架的
支持。
➢ Transcation 事务模块支持编程和申明式的事务管理,这些事务类必须实现特定的接口。
3、Web:Web 上下文建立在应用程序上下文之上,Spring Web 为 Web 程序提供了基本的特
性,可以将 Spring 的资源注入到框架,也可以在框架前后创建拦截器实现功能。
➢ Web 模块提供了基本的面向 Web 的特性,例如多文件上传、使用 Servlet Listeners 初始
化 IOC 容器,以及一个面向 Web 的应用上下文。
➢ Spring MVC 模块提供面向 Web 应用的 Model-View-Controller 即 MVC 框架。
4、AOP:提供了面向切面编程的服务,通过 AOP 可以有效的将业务逻辑和公共功能模块分
开,降低模块之间的耦合。
2. Spring 的优点
1) Spring 属于低侵入式,代码污染极低(编写的代码基本不会用到 Spring 的代码);
2) Spring 提供的 IOC、DI 将对象管理交给容器,较低代码之间的耦合,简化编程,将侧重
点聚集到业务代码;
3) Spring 提供了 AOP 面向切面,可以将日志、安全、事务、权限等功能模块与业务代码
分离,降低模块之间的耦合;
4) Spring 对于主流的框架支持集成;
3. Spring IOC 的理解
(1) 什么是 IOC
IOC(Inversion Of Controller)控制反转,指对象的控制权由之前的自己控制转交给了 Spring
容器控制,容器负责对象的整个生命周期和对象之间的依赖关系。
即创建对象的时间和对象的管理权力交给了 Spring,如果有依赖的对象时,必须使用 new 关
键字创建对象,导致与依赖的对象的类或者接口耦合在了一起。通过 Spring 容器管理对象
的整个生命周期,不再需要 new 关键字去创建对象,直接从 Spring 的容器去获取对象,当
有对象直接存在依赖的时候,Spring 容器通过 DI 动态的将依赖的对象进行注入,使用 Java
的反射机制实现,而反射机制能够实现在运行时进行对象的创建、方法的执行、属性的修改。
(2) 什么时 DI
DI 依赖注入,当对象直接存在依赖关系,Spring 通过 Java 的反射机制动态的将依赖的对象
注入到使用的对象中
(3) IOC 的原理
IOC 控制反转是通过工厂 BeanFactory 和反射机制实现,Spring 容器对于 Bean 对象的创建、
属性设置、初始化、销毁等整个生命周期进行管理。
4. 什么是 AOP
Java 是 OOP 面向对象开发,允许纵向扩展(继承、实现接口)、但是不适用与横向的关系
定义,这样就会导致大量的重复代码,不利于各个模块的重用。
AOP,一般称之为面向切面,作为面向对象的一种补充,对于一下公共的模块例如日志、安
全、事务、权限等进行抽象封装为一个新的模块,这个模块叫做切面(Aspect),减少系统
中重复代码、降低模块之间的耦合、提供代码的维护性。
AOP 的实现主要通过代理,AOP 的代理又分为静态代理和动态代理。静态代理以 AspectJ 为
代表,动态代理主要以 Spring AOP 为代表。
(1) AspectJ 是静态代理,也成为编译时期增强,AOP 框架在编译时期生成 AOP 代理,并将
AspectJ(切面)织入到 Java 字节码中,运行的时候就是增强的 AOP 对象
(2) Spring AOP 是动态代理,所谓的动态代理就是不会去修改字节码,运行时期在内存中临
时生成一个 AOP 对象,这个对象包含了目标对象的所有方法,并且在特点的切点,做
了增强处理,并且回调目标对象的方法。
Spring AOP 的动态代理通过 JDK 动态代理和 CGLib 实现。
1) JDK 动态代理只支持接口的代理,被代理的对象必须实现接口,JDK 动态代理的核心是
InvocationHandler 接 口 和 Proxy 类 。 通 过 Proxy 类 的 静 态 方 法
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)获取代理
对象,通过代理对象调用方法时,调用 InvocationHandler 的 invoke 方法,通过反射调
用到真实对象的方法。
2) CGLib 是一个可以动态生成类的库,在 Java 运行的时候,动态的生成一个子类,然后将
需要加强的代码织如到子类中,从而实现加强,CGLib 是通过继承的实现代理,所以当
一个类使用 final 关键字进行修饰的时候,就无法使用 CGLib 进行动态代理。
Spring AOP 默认首先使用 JDK 动态代理,当代理对象没有实现接口时,使用 CGLib 动态代理。
5. Spring AOP 中常用名词概念
(1) Join Point:连接点,连接点本质就是一个方法,每一个连接点对于一个方法执行;
(2) Aspect:切面,抽象出来的公共模块,可以横切多个方法,Spring AOP 中切面类可以使
用@AspectJ 注解来实现;
(3) PointCut:切点,用来定义需要拦截的连接点;
(4) Advice:通知,指在 Join Point 连接点上要执行的逻辑,即增强的逻辑,包括 Around、Before、
After,After returning、After throwing;
(5) Target:目标对象,包含 Join Point 连接点,其实就是代理对象;
(6) Weaving:织如,通过动态代理,将通知即增强的逻辑织如到目标对象即连接点,然后
去执行增强的逻辑。
(7) Introduction:引入,添加额为的字段或者方法到被通知的对象,Spring 运行引入新的接
口或者对应的实现到任何被代理的对象。
剩余12页未读,继续阅读
资源评论
阿小木的愤怒
- 粉丝: 8
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Pytorch训练CIRAR10上分类算法.zip
- Pytorch-pytorch深度学习教程之Tensorboard.zip
- 基于C++和Python开发yolov8-face作为人脸检测器dlib作为人脸识别器的人脸考勤系统源码+项目说明.zip
- Pytorch-pytorch深度学习教程之变分自动编码器.zip
- Pytorch-pytorch深度学习教程之神经风格迁移.zip
- Pytorch-pytorch深度学习教程之深度残差网络.zip
- Pytorch-pytorch深度学习教程之循环神经网络.zip
- Pytorch-pytorch深度学习教程之逻辑回归.zip
- Pytorch-pytorch深度学习教程之双向循环网络.zip
- Pytorch-pytorch深度学习教程之卷积神经网络.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功