Spring注解AOP实战:启用AspectJ自动代理与切面配置

0 下载量 190 浏览量 更新于2024-08-29 收藏 80KB PDF 举报
"这篇文档是关于Spring注解的第四部分,主要聚焦于注解驱动的AOP(面向切面编程)的使用。文中提到了如何引入`spring-aspects`库来支持AOP功能,以及如何配置Spring容器识别切面类。通过`@Aspect`、`@Before`等注解定义切面和通知,实现动态插入代码到指定方法执行。" 在Spring框架中,AOP是一种重要的编程模型,它允许程序员在不修改源代码的情况下,对现有代码添加额外的功能或监控。本文档讨论的是使用注解来实现AOP的场景,这大大简化了AOP的配置和使用。 首先,为了使用Spring的注解版AOP,需要在项目中引入`spring-aspects`模块,其版本号为4.3.13.RELEASE。这个依赖包含了处理注解AOP所需的所有组件。 然后,创建一个配置类,如`MainConfigOfAOP`,并使用`@Configuration`注解标识它是配置类。为了启用基于注解的AOP,还需要添加`@EnableAspectJAutoProxy`注解,这告诉Spring容器自动扫描并处理带有`@Aspect`注解的类。 在配置类中,使用`@Bean`注解声明业务逻辑类(如`Calculator`)和切面类(如`LogAspects`)的实例,确保它们都被Spring容器管理。`@Aspect`注解标记在切面类上,表明这个类包含切面逻辑。 切面类中的通知方法,比如`logStart`,可以使用`@Before`、`@After`等注解来定义它们的执行时机。例如,`@Before`注解表示该方法会在目标方法(这里是`Calculator`的`div`方法)执行前被调用。切入点表达式(如`execution(public int com.zyn.bean2.Calculator.*(..))`)用于精确匹配需要拦截的方法。 `@Pointcut`注解定义了一个切入点,它是一个通用的切入点表达式,可以被多个通知方法共享。`pointCut()`方法中的切入点表达式匹配所有`Calculator`类的公共方法。`@After`注解的使用则表示在匹配的切入点表达式对应的方法执行后,`logStart`方法会被调用。 此外,还可以通过引用其他切面类的切入点表达式来复用已定义的切点,增强了代码的可重用性。 Spring注解驱动的AOP使得在程序运行时动态插入代码变得简单且直观,开发者可以通过注解轻松定义切面、通知以及它们的执行时机,而无需手动编写复杂的代理代码。这种编程方式在日志记录、事务管理、性能监控等场景下非常有用。