10.Spring---面向切面

http://www.cnblogs.com/caoyc/p/5629507.html

一、名词解释

1.通知:要执行的方法
2.连接点:什么时候调用
3.切点:方法执行的位置
4.切面:在什么地方执行什么方法
5.引入:允许我们向现有的方法添加新的属性
6.织入:什么时候加入切面

二、Spring只支持Java级别的连接点

三、借助AspectJ切点表达式定义切面

1.在非Maven项目中首先要去官网下载jar包,并且将Jar包解压拿到其中的两个包导入到项目

Paste_Image.png

2.配置命名空间

 xmlns:aop="http://www.springframework.org/schema/aop"  
 xsi: http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd

3.使用@Aspect表示切面

*号表示返回任意类型  
..表示方法的参数可以是任意类型,代指所有perform重载的方法都可以**
execution(* com.crazyorange.springtest.aop.Perform.perform(..))

3.1 使用@Aspect表示切面
**3.2 使用PointCut定义一个可用重用的切面 **

Paste_Image.png

4.启用AspectJ自动代理

Paste_Image.png

5.提供切面的bean
当我们配置了自动代理以后,也要给spring提供一个切面的bean,否则spring找不到切面对象就不能够创建切面。

Paste_Image.png

三、创建环绕通知

@ARound创建环绕通知
3.1 环绕通知必须要有一个ProceedingJoinPoint参数,该参数的功能是移交控制权,在适当的时候必须调用proceed方法,否则会阻塞被通知的方法

Paste_Image.png

四、使用通知中的参数

execution(* com.crazyorange.springtest.aop.Perform.performAround(String))&&args(name)

args:该限定符表示传递给被通知方法的参数也会传递给定义的通知方法
1.String:指定方法的参数类型
2.name:对应方法的参数名称,必须和被通知方法的参数名一样
3.切点方法的参数要与定义的切点的参数名一致,这样才能传递给切点方法。


Paste_Image.png

五、通过注解给bean引入新的方法。

使用场景:当我们需要给一个类动态的添加一个新的方法时,可以使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章内容: 面向切面编程的基本原理 通过POJO创建切面 使用@AspectJ注解 为AspectJ切面注入依赖 ...
    谢随安阅读 8,472评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,803评论 19 139
  • 特别想念妈妈的陪伴。 至今还一直想着以前和妈妈一起洗澡的情景。小小的我总是喜欢洗澡的时候在卫生间里闹,实在是太喜欢...
    琯潇阅读 1,877评论 0 0
  • head插件 1.修改es参数 (elasticsearch.yml),增加如下参数 2.安装git,下载源码 3...
    aldren阅读 4,386评论 0 0
  • (三)最健康的早起 被誉为台湾的“经营之神”的王永庆,在台湾的富豪中他雄居首席,在世界化学工业界他居“50强”之列...
    熊注阅读 3,826评论 2 2

友情链接更多精彩内容