Spring AOP之AspectJ实现方式

AspectJ是基于语言扩展的,在代码运行时才起作用

用AspectJ比用传统的动态代理方式更方便

它们的区别即动态横切和静态横切的区别

动态代理的缺点:

1、它一定要面向接口,如果有一些类没有面向接口编程,则就不能实现注入,不能实现横切,不能实现aop的功能

2、它只能对方法的使用横切,不能加入属性、引介等

故现在基本上都是基于AspectJ来实现

AspectJ的使用方法:

1、配置文件中引入命名空间以及scheme资源

xmlns:aop="http://www.springframework.org/schema/aop"

http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd

2、导入依赖包

 3、开启AspectJ的自动代理(在applicationContex-aop.xml中)

4、基于注解的方式

(要在applicationContext-aop.xml文件中进行配置(对包进行扫描,以使用注解))

(1)告诉类这是一个切面

 

(2)写明是以什么样的方式切入(前置、后置等)以下以前置为例

value是用表达式的语法来写的,其中一定要有一个execution(),其中的参数以空格隔开

语法:execution(访问修饰符,返回值类型,类,方法,参数 )(括号里的内容可选)

访问修饰符指定public/private/...可以切入(其他的同理)

①最开始的 * :任意的返回值类型都会被切入

②某个包下的任意的的任意的方法的任意的参数

(3)xml中创建切面(虽然说并不会使用切面对象,但是还是要把它创建出来)

(这里id不写也可以,因为Spring-IoC给每个对象都取了名字,那个名字才是真正的id,所以这里不需要也可以)

5、运行效果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值