MVC AOP 10火推
来源:互联网 发布:法律面前人人平等 知乎 编辑:程序博客网 时间:2024/05/18 15:27
1.什么是AOP
Aspect Oriented Programming 面向切面编程
可以在不修改源代码的情况 对原有的组件 增加功能
OOP Object Orientied Programming 面向对象编程
面向对象的核心是 对象 面向切面的核心是切面 是对面向对象的扩展
2.Spring AOP 中核心组件
##Aspect 共通的业务逻辑 可以把这个逻辑功能切入到多个对象的方法上
Join Point 连接点 表达一个位置 这个位置上要加切面功能
##Pointcut 切入点 一堆连接的点的集合 后面会讲使用表达式把切点表达出来
Target 目标对象
Proxy 代理 AutoProxy 自动生成的代理
java jdk 的代理 和 CGLIB 的代理
##Advice 通知
方法的切入时机 add update get
时机 调用之前 调用之后 调用前后 抛出异常 最终执行
3.在service 的方法执行之前 切入一个输入 横线的功能
3.1 建立一个 Spring 的项目 拷贝 配置文件 和 jar包(ioc 和 aop )
3.2 建立一个service 类 和 切面类
3.3 在配置文件中 启动组件扫描
把Service 对象 注入到 Spring 容器
4.切入点表达式的写法
within 类型限定表达式
com.xdl.service 这个包下所有类型 不包括子包
expression = "within(com.xdl.service.*)"
com.xdl.service 这个包直接子包下的类型
expression = "within(com.xdl.service.*.*)"
com.xdl.service 这个包和子包下的类型
expression = "within(com.xdl.service..*)"
com.xdl.service 这个包下所有类型 包括直接子包 和 非直接子包
expression = "within(com..*.*)"
execution 方法限定表达式
expression = "execution([修饰权限] 返回值 方法名(参数列表) [异常抛出])"
com.xdl.service.EmpService 这个类中 所有的以 log开头的方法
expression = "execution(void com.xdl.service.EmpService.log*())"
程序中 所有的 以 add开头的方法
expression = "execution(* add*())"
程序中 com.xdl 包 及子包 所有的 以 add开头的方法
expression = "execution(* com.xdl..*.add*())"
bean 限定表达式
以spring 容器中bean 的 id 作为限定标准
experession = "bean(emp*)"
5.Spring AOP 通知的五种类型
<aop:before> 前置通知 业务方法调用之前执行
<aop:after-returning> 后置通知 业务方法不抛异常 业务执行之后执行
如果业务方法抛异常 则不执行
<aop:after> 最终通知 业务方法 无论是否抛异常 最终都会执行
<aop:after-throwing> 异常通知 业务方法抛出异常之后 执行
<aop:around> 环绕通知 业务方法之前和之后 都执行
6.基于标注的 aop
6.1 拷贝 ioc 和 aop 的jar 包到项目下
6.2 拷贝spring 的配置文件
先开启组件扫描 再开启基于标注的 aop
<!-- 开启组件扫描 -->
<context:component-scan base-package="com.xdl" ></context:component-scan>
<!-- 开启基于标注的aop -->
<aop:aspectj-autoproxy ></aop:aspectj-autoproxy>
6.3 写一个Service 的类 BankService
里面有 一个业务方法 transfter login
6.4 写一个切面类出来
里面写一些共通的处理代码
@Component
@Aspect
在切面方法上 加 @Before("切点表达式") @After 等标注
6.5 测试
最后总结一句话 就是 切面 ---- 通知 ----- 切点
Aspect Oriented Programming 面向切面编程
可以在不修改源代码的情况 对原有的组件 增加功能
OOP Object Orientied Programming 面向对象编程
面向对象的核心是 对象 面向切面的核心是切面 是对面向对象的扩展
2.Spring AOP 中核心组件
##Aspect 共通的业务逻辑 可以把这个逻辑功能切入到多个对象的方法上
Join Point 连接点 表达一个位置 这个位置上要加切面功能
##Pointcut 切入点 一堆连接的点的集合 后面会讲使用表达式把切点表达出来
Target 目标对象
Proxy 代理 AutoProxy 自动生成的代理
java jdk 的代理 和 CGLIB 的代理
##Advice 通知
方法的切入时机 add update get
时机 调用之前 调用之后 调用前后 抛出异常 最终执行
3.在service 的方法执行之前 切入一个输入 横线的功能
3.1 建立一个 Spring 的项目 拷贝 配置文件 和 jar包(ioc 和 aop )
3.2 建立一个service 类 和 切面类
3.3 在配置文件中 启动组件扫描
把Service 对象 注入到 Spring 容器
4.切入点表达式的写法
within 类型限定表达式
com.xdl.service 这个包下所有类型 不包括子包
expression = "within(com.xdl.service.*)"
com.xdl.service 这个包直接子包下的类型
expression = "within(com.xdl.service.*.*)"
com.xdl.service 这个包和子包下的类型
expression = "within(com.xdl.service..*)"
com.xdl.service 这个包下所有类型 包括直接子包 和 非直接子包
expression = "within(com..*.*)"
execution 方法限定表达式
expression = "execution([修饰权限] 返回值 方法名(参数列表) [异常抛出])"
com.xdl.service.EmpService 这个类中 所有的以 log开头的方法
expression = "execution(void com.xdl.service.EmpService.log*())"
程序中 所有的 以 add开头的方法
expression = "execution(* add*())"
程序中 com.xdl 包 及子包 所有的 以 add开头的方法
expression = "execution(* com.xdl..*.add*())"
bean 限定表达式
以spring 容器中bean 的 id 作为限定标准
experession = "bean(emp*)"
5.Spring AOP 通知的五种类型
<aop:before> 前置通知 业务方法调用之前执行
<aop:after-returning> 后置通知 业务方法不抛异常 业务执行之后执行
如果业务方法抛异常 则不执行
<aop:after> 最终通知 业务方法 无论是否抛异常 最终都会执行
<aop:after-throwing> 异常通知 业务方法抛出异常之后 执行
<aop:around> 环绕通知 业务方法之前和之后 都执行
6.基于标注的 aop
6.1 拷贝 ioc 和 aop 的jar 包到项目下
6.2 拷贝spring 的配置文件
先开启组件扫描 再开启基于标注的 aop
<!-- 开启组件扫描 -->
<context:component-scan base-package="com.xdl" ></context:component-scan>
<!-- 开启基于标注的aop -->
<aop:aspectj-autoproxy ></aop:aspectj-autoproxy>
6.3 写一个Service 的类 BankService
里面有 一个业务方法 transfter login
6.4 写一个切面类出来
里面写一些共通的处理代码
@Component
@Aspect
在切面方法上 加 @Before("切点表达式") @After 等标注
6.5 测试
最后总结一句话 就是 切面 ---- 通知 ----- 切点
阅读全文
0 0
- MVC AOP 10火推
- spring MVC 05 火推
- Spring MVC 06火推
- spring mvc 07 火推
- spring mvc 08 火推
- Spring MVC rest 09 火推
- c# mvc 服务器推
- Spring MVC 配置 AOP
- asp.net mvc aop
- Spring MVC AOP编程
- AOP.jsp+MVC.jsp
- Spring mvc aop 无效
- AOP in Asp.net MVC
- AOP in Asp.net MVC
- 2012年终总结spring mvc-----AOP
- AOP MVC中应用实例
- MVC过滤器 实现AOP(入门)
- ASP.NET MVC AOP-Filter
- 百度上传插件 WebUploader初始使用
- Spring MVC rest 09 火推
- 900AFind Extra One
- 【LeetCode】648.Replace Words(Medium)解题报告
- scala数据结构之Set和Map
- MVC AOP 10火推
- 最新高清IT职业技能图谱:机器学习、架构师、大数据、前端、运维,全套免费下载
- 图像分割中各个指标的计算方法
- 斐波那契数列的三种解法及时间复杂度
- java--设计模式
- 应用TF-Slim快速实现迁移学习
- Android基础知识二(应用程序框架)
- MPEG-AAC家族介绍
- struts-config.xml配置文件详解