zoukankan      html  css  js  c++  java
  • 基于XML的AOP配置

    创建spring的配置文件并导入约束

    此处要导入aop的约束

    <?xml version="1.0" encoding="UTF-8"?> 
      <beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        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/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd"> 
      </beans>

    在pom.xml中添加依赖

    以下添加的依赖用于解析切入点表达式

    <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.8.7</version>
    </dependency>

    spring中基于XML的AOP配置步骤

    1. 配置srping的Ioc

    2. 把通知bean也交给Spring来管理

    <!-- 配置Logger类 -->
    <bean id="logger" class="com.itheima.utils.Logger"></bean>

    3. 使用aop:config标签表明开始AOP的配置

    4. 使用aop:aspect标签表明配置切面

      id属性: 给切面提供一个唯一标识

      ref属性: 指定通知类bean的id

    5. 在aop:aspect标签的内部使用对应标签来配置通知的类型

        并且建立通知方法和切入点方法的关联

      method属性: 用于指定通知类中,哪个方法是对应的通知

      pointcut属性: 用于指定切入点表达式,该表达式的含义指的是对业务层中哪些方法增强

    切入点表达式的写法:

      关键字: execution(表达式)

      标准的表达式:

        访问修饰符   返回值    包名.包名.包名...类名.方法名(参数列表)

        public void com.itheima.service.impl.AccountServiceImpl.saveAccount()

      访问修饰符可以省略

      返回值可以使用通配符,表示任意返回值

        * com.itheima.service.impl.AccountServiceImpl.saveAccount()

      包名可以使用通配符表示任意包   但是有几级包, 就需要写几个*.

    .    * *.*.*.*.AccountServiceImpl.saveAccount()

      包名可以使用  ..  表示当前包及其子包  

        * *..AccountServiceImpl.saveAccount()

      类名和方法名都可以使用* 进行通配

        * *..*.*()     此时方法中有参数的不会进行增强

      参数列表

        可以直接写数据类型:

          基本类型直接写名称     int

          引用类型写包名.类名的方式    java.lang.String

        可以使用通配符表示任意类型, 但是必须有参数(有参数的才会进行增强)

          * *..*.*(*)

        可以使用..表示有无参数均可,有参数可以是任意类型

      全通配写法

        * *..*.*(..)

      实际开发中切入点表达式的通常写法: 

        切到业务层实现类下的所有方法

          * com.itheima.service.impl.*.*(..)

    实例: 

    <!--配置AOP-->
        <aop:config>
            <!--配置切面 -->
            <aop:aspect id="logAdvice" ref="logger">
                <!-- 配置通知的类型,并且建立通知方法和切入点方法的关联-->
                <aop:before method="printLog" pointcut="execution(* com.itheima.service.impl.*.*(..))"></aop:before>
            </aop:aspect>
        </aop:config>

     

  • 相关阅读:
    笔记本硬盘接口SATA, PATA
    dB和dBm的区别
    SQL Server 存储过程分页方案比较
    SQL Server 输出参数OUTPUT
    安装iis5.1时找不到zClientm.exe的解决方法
    mac os x 10.5.8不通本网段
    SQL Server 存储过程分页大全(2005,2000)
    硬盘保修查询网站明细清单希捷硬盘保修查询西数硬盘保修查
    如何让SWT的窗口置顶(总在最上面)?
    ASP.NET(三) Web开发——常用服务器控件
  • 原文地址:https://www.cnblogs.com/mkl7/p/10692882.html
Copyright © 2011-2022 走看看