Spring总结pt5

12 篇文章 0 订阅

Spring第8章: @aspectj 和 schema的aop:

上一章的Spring aop还是使用比较复杂,现在Spring使用@Aspectj就方便了。
Spring aop升级
在这里插入图片描述
在这里插入图片描述
🤔aspectj也是动态代理技术?不是编译期植入吗?答:是的
在这里插入图片描述

  • 上一章中,继承StaticMethodMatcherPointcutAdvisor来表示定义切点,实现MethodBeforeAdvice来定义增强advice。在xml中吧advice引入切点形成切面(advisor),再利用代理类ProxyFactoryBean实现aop。
  • 现在用@aspectj来描述切点、增强advice。
@Aspect
public class PreGreetingAspect {
    @Before(“execution(* greetTo(..))”)
    public void beforeGreeting(){
        System.out.println(“你好”);
    }
}
AspectJProxyFactory factory = new AspectJProxyFactory();

NaiveWaiter target = new NaiveWaiter();
factory.setTarget(target);
factory.addAspect(PreGreetingAspect.class);

Waiter proxy = factory.getProxy();
proxy.greetTo(“yuyu”);
proxy.serveTo(“uu”);

在这里插入图片描述
虽然和第7章形似、这里和第7章都set了target。但是7章会对target里面所有的方法织入,说白了没有切点。这里已经通过注解@Before(“execution(* greetTo(…))”)实现了切点的精准查找和织入。

  • 把上述代码实现转换为xml配置实现:实现了自动把target和切面组合、当然应该也可以通过xml配置精准组合。
<aop:aspectj-autoproxy/>
<bean id=“waiter-j” class=“chap8.pojo.NaiveWaiter”/>
<bean class=“chap8.aspectj.PreGreetingAspect”/>
ApplicationContext context = new ClassPathXmlApplicationContext(“chap8/aspectj-aop.xml”);
Waiter waiter = (Waiter) context.getBean(“waiter-j”);
waiter.greetTo(“Auto Sir”);

aspectj语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
还有通配符、逻辑运算符

  • 不同类型的增强advice
  1. @Before
  2. @AfterReturning
  3. @Around
  4. @AfterThrowing
  5. @After
  6. @DeclareParents :相当于introduce

切点函数暂不详细复习

@aspectj进姐,暂不详细复习:复合运算、织入顺序、访问连接点信息…

基于schema的@aspectj也不看,因为现在都可以用注解

在这里插入图片描述

对比(第7章没有用任何<aop: 命名空间>)

<aop: >是新Spring加的,不是@aspectj独有的, @aspectj可以使用<aop: >配置
在这里插入图片描述
在这里插入图片描述

总结:

  • 在@aspectj中,核心就是:
  1. 写一个带有@aspectj注解的配置类,编程切点函数
  2. 剩下的工作就是装配:找target和连接点、最终织入。很简单。
  • 而第7章Spring aop中,需要
  1. 实现一个advice;
  2. 使用(继承)一个切点切面类,进行切点的定义;
  3. 利用xml和ProxyFactoryBean来组合在一起。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值