美文网首页工作生活
Spring框架基于 XML 的 AOP 配置

Spring框架基于 XML 的 AOP 配置

作者: 月哥说了算 | 来源:发表于2019-07-04 11:44 被阅读0次

    第一步:创建 maven 工程并导入坐标

    <dependencies>
     <dependency> 
    <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.0.2.RELEASE</version>
    </dependency> 
    <dependency>
     <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>1.8.7</version>
    </dependency> 
    </dependencies>
    

    第二步:准备必要的代码

    /**
    * 账户的业务层接口
    * @author gzy
    * @Company g
    * @Version 1.0
    */
    public interface IAccountService {
    /**
    * 模拟保存
    */
    void saveAccount();
    /**
    * 模拟更新
    * @param i
    */
    void updateAccount(int i);
    /**
    * 模拟删除
    * @return
    */
    int deleteAccount();
    }
    /**
    * 账户的业务层实现类
    * @author gzy
    * @Company g
    * @Version 1.0
    */
    public class AccountServiceImpl implements IAccountService {
    @Override
    public void saveAccount() {
    System.out.println("保存了账户");
    }
    
    @Override
    public void updateAccount(int i) {
    System.out.println("更新了账户"+i);
    }
    @Override
    public int deleteAccount() {
    System.out.println("删除了账户");
    return 0;
    } }
    /**
    * 模拟一个用于记录日志的工具类
    * @author gzy
    * @Company h
    * @Version 1.0
    */
    public class Logger {
    /**
    * 用于打印日志
    * 计划让其在切入点方法执行之前执行
    */
    public void printLog() {
    System.out.println("Logger 类中的 printLog 方法开始记录日志了。。。");
    } }
    

    第三步:创建 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>
    

    第四步:配置 spring 的 ioc

    <!-- 配置 service --> <bean id="accountService" class="com.service.impl.AccountServiceImpl"></bean>
    

    第五步:配置 aop

    <!--
    aop 的配置步骤:
    第一步:把通知类的创建也交给 spring 来管理
    第二步:使用 aop:config 标签开始 aop 的配置
    第三步:使用 aop:aspect 标签开始配置切面,写在 aop:config 标签内部
    id 属性:给切面提供一个唯一标识
    ref 属性:用于引用通知 bean 的 id。
    第四步:使用对应的标签在 aop:aspect 标签内部配置通知的类型
    使用 aop:befored 标签配置前置通知,写在 aop:aspect 标签内部
    method 属性:用于指定通知类中哪个方法是前置通知
    pointcut 属性:用于指定切入点表达式。
    切入点表达式写法:
    关键字:execution(表达式)
    表达式内容:
    全匹配标准写法:
    访问修饰符 返回值 包名.包名.包名...类名.方法名(参数列表)
    例如:
    public void com.service.impl.AccountServiceImpl.saveAccount()
    -->
    <!-- 配置通知类 --> <bean id="logger" class="com.utils.Logger"></bean>
    <!-- 配置 aop --> <aop:config>
    <!-- 配置切面 --> <aop:aspect id="logAdvice" ref="logger">
    <!-- 配置前置通知 --> <aop:before method="printLog" pointcut="execution( * 
    com.service.impl.*.*(..))"/>
    </aop:aspect>
    </aop:config>
    

    相关文章

      网友评论

        本文标题:Spring框架基于 XML 的 AOP 配置

        本文链接:https://www.haomeiwen.com/subject/yhylhctx.html