Spring框架(JavaEE开发进阶Ⅲ)—注解切面

一、主要内容

1、注解前置、后置通知
2、注解环绕通知
3、标注引入

二、注解前置、后置通知

1、AspectJ5之前,编写AspectJ切面需要学习一种Java语言的扩展—AspectJ

2、AspectJ面向注解的模型可通过少量注解把任意类转变为切面,该新特性称为@AspectJ

3、@AspectJ注解和<aop:aspect>元素都是把一个POJO转变成一个切面
在Spring里面,切面也是一个Bean。也是在Spring的上下文里面进行管理

4、@Aspect注解标识了该类不仅是一个POJO,还是一个切面

5、@Pointcut注解定义一个可以在@AspectJ切面内重用的切入点,切入点的名称就是注解所应用的方法名称,该方法本身只是一个标识,供@Pointcut注解依附

6、最后要让Spring将该类应用为一个切面。Spring在aop命名空间中提供了一个自定义的配置元素<aop:aspectj-autoproxy/>
配置后Spring在启动时会去查找@Aspect配置的类,和@Pointcut等等注解配置的内容

7、<aop:aspectj-autoproxy/>在Spring上下文中创建一个AnnotationAwareAspectJAutoProxyCreator类,它会自动代理一些Bean,这些Bean的方法要与使用@Aspect注解的Bean中定义的切入点相匹配,这些切入点被@Pointcut注解定义
白话:就是会代理切入点定义的方法,方法调用时被拦截

8、为了使用<aop:aspectj-autoproxy/>配置元素,要在Spring配置文件中包含aop命名空间
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context-3.0.xsd  
        http://www.springframework.org/schema/aop  
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        ">  <!-- 引入aop空间 -->

        <aop:aspectj-autoproxy/>

</beans>

三、注解环绕通知

1、使用@Around注解创建环绕通知


四、标注引入

1、等价于<aop:declare-parents>的注解是@AspectJ的@DeclareParents


2、@DeclareParents注解由三部分组成:
1)value属性:等同于<aop:declare-parents>的types-matching属性,标识应该被引入制定接口的Bean类型
2)defaultImpl属性:等同于<aop:declare-parents>的default-impl属性,标识该类提供了所引入接口的实现
3)由@DeclareParents注解所标注的static属性指定了将被引入的接口

五、例子程序

https://pan.baidu.com/s/1DXhj3fXHPunor6LQFimfOQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值