spring定义:
- Spring 是基于分层的javaEE应用一站式轻量级开源框架,主要核心是 IOC(控制反转/依赖注入)与AOP(面向切面)两大技术,实现项目在开发过程中的轻松解耦,提高项目的开发效率
控制反转(IoC):
及上层控制下层,而不是下层控制着上层。我们用依赖注入(Dependency Injection)这种方式来实现控制反转。所谓依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的“控制”。
面向切面(AOP) :
AOP全名Aspect-oriented programming面向切面编程大法,它有很多兄弟,分别是经常见的面向对象编程,朴素的面向过程编程和神秘的函数式编程等。
在函数式编程中函数是第一等公民
函数是第一等公民:是指函数跟其它的数据类型一样处于平等地位,可以赋值给其他变量,可以作为参数传入另一个函数,也可以作为别的函数的返回值。正如我们开头提到的闭包的实现好体现了这个特点,例如如下代码
ps:oriented adj. 对…感兴趣的;以…为方向的;重视…的
什么是 pom?
POM 是 Project Object Model 的缩写,即项目对象模型。
pom.xml 就是 maven 的配置文件,用以描述项目的各种信息
代理模式实现三要素
- 接口定义
- 目标对象与代理对象必须实现统一接口
- 代理对象持有目标对象的引用 增强目标对象行为
代理模式实现分类以及对应区别
- 静态代理:手动为目标对象制作代理对象,即在程序编译阶段完成代理对象的创建
- 动态代理:在程序运行期动态创建目标对象对应代理对象。
- jdk动态代理:被代理目标对象必须实现某一或某一组接口 实现方式 通过回调创建代理对象。
- cglib 动态代理:被代理目标对象可以不必实现接口,继承的方式实现。
动态代理相比较静态代理,提高开发效率,可以批量化创建代理,提高代码复用率。
7.3. Aop 理解 - 面向切面,相比oop 关注的是代码中的层 或面
- 解耦,提高系统扩展性 提高代码复用
-
Aop 关键词
- 连接点:每一个方法
- 切入点:匹配的方法集合
- 切面:连接点与切入点的集合决定了切面,横切关注点的抽象
- 通知:几种通知
- 目标对象:被代理对象
- 织入:程序运行期将切面应用到目标对象 并生成代理对象的过程
- 引入:在不修改原始代码情况下,在程序运行期为程序动态引入方法或字段的过程
切入点语法
切入点是什么:
* 匹配规则。规定什么方法被拦截、需要处理什么方法
* 定义切入点:
@Pointcut("匹配规则")
* Aop 切入点表达式简介
* 1. 执行任意公共方法:
* execution(public *(..))
* 2. 执行任意的set方法
* execution( set(..))
* 3. 执行com.xxxx.service包下任意类的任意方法
* execution( com.xxxx.service..*(..))
* 4. 执行com.xxxx.service 包 以及子包下任意类的任意方法
* execution( com.xxxx.service...*(..))
* 注:表达式中的第一个* 代表的是方法的修饰范围
可选值:private、protected、public (* 表示所有范围)