Spring 框架的AOP之注解的方式

本文内容纲要:

- 1. 环境搭建

1. 环境搭建

1.1 导入 jar 包

  • Spring 框架的基本开发包(6个);

  • Spring 的传统AOP的开发包

    • spring-aop-4.3.10.RELEASE
    • org.aopalliance-1.10.0 (在 Spring 依赖包中)

  • aspectJ 的开发包

    • org.aspectj.weave-1.6.8.RELEASE.jar (在 Spring 依赖包中)
    • spring-aspects-4.3.10.RELEASE.jar

1.2 编写 applicationContext.xml 配置文件

<?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:context="http://www.springframework.org/schema/context"

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

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

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.xsd

http://www.springframework.org/schema/aop

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

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- 开启自动代理 -->

<aop:aspectj-autoproxy/>

<!-- 配置目标对象 customerDao -->

<bean id="customerDao" class="com.itheima.demo.CustomerDaoImpl"/>

<!-- 配置切面类 -->

<bean id="myAspectAnno" class="com.itheima.demo.MyAspectAnno"/>

</beans>

1.3 创建包结构,编写具体的接口和实现类

  • com.itheima.demo

    • CustomerDao: 接口;
    • CustomerDaoImpl: 实现类;

  • 在 applicationContext.xml 中配置

    // CustomerDao.java

    public interface CustomerDao{

    public void save();

    }

    // CustomerDaoImpl.java

    public class CustomerDaoImpl{

    public void save(){

    System.out.println("保存客户...");

    }

    }

    // 编写测试方法

    @RunWith(SpringJUnit4ClassRunner.class)

    @ContextConfiguration("classpath:applicationContext.xml")

    public class Demo{

    @Resource(name="customerDao")

    private CustomerDao customerDao;

        @Test

    public void fun(){

    customerDao.save();

    }

    }

    // 编写切面类

    @Aspect

    public class MyAspectAnno{

    // 通知(增前方法)

    // @Before(切入点表达式)

    @Before(value="execution(public void com.itheima.demo.CustomerDaoImpl.save())")

    public void log(){

    System.out.println("记录日志...");

    }

    }

1.4 在 applicationContext.xml 中开启自动代理

<aop:aspectj-autoproxy/>

1.5 通知类型

  • @Before: 前置通知;
  • @AfterReturning: 后置通知;
  • @Around: 环绕通知;
  • @After: 最终通知;
  • @AfterThrowing: 异常抛出通知;

1.6 配置通用的切入点

  • 使用 @Pointcut 配置通用的切入点

    // 示例

    @Aspect

    public class MyAspectAnno{

    @Before(value="MyAspectAnno.fn()")

    public void log(){

    System.out.println("记录日志...");

    }

    @After(value="MyAspectAnno.fn()")

    public void after(){

    System.out.println("最终通知...");

    }

    // 自定义切入点

    @Pointcut(value="execution(public void com.itheima.demo.CustomerDaoImpl.save())")

    public void fn(){}

    }

参考资料

  • Spring 入门视频

本文内容总结:1. 环境搭建,

原文链接:https://www.cnblogs.com/linkworld/p/7721857.html

以上是 Spring 框架的AOP之注解的方式 的全部内容, 来源链接: utcz.com/z/296693.html

回到顶部