spring aop是面向切面编程,使用了动态代理的技术,这样可以使业务逻辑的代码不掺入其他乱七八糟的代码
可以在切面上实现合法性校验、权限检验、日志记录。。。
spring aop 用的多的有两种配置方法:注解配置和xml配置
注解配置更好,友好重构、错误也好检查在这里只讲注解配置
aop概念
- 切面:切面类,里面有切点有通知,切面包括了一切(在哪切,干什么)
- 切点:定义了在个地方切
- 通知:定义了在切点处做些什么
- 连接点:所有可以被切的地方
切面配置
@Aspect public class LibraryAOPConf {}
@Aspect标记的类即是一个切面,在这个类中定义切面和通知
开启自动代理
因为AOP是代理实现的,将切面放进bean容器是不会生成代理对象的,所以要开启自动代理
@Configuration @EnableAspectJAutoProxy public class LibraryConf {}
在装配bean的配置类加上@EnableAspectJAutoProxy就可以了或者在xml中加上<aop:aspectj-autoproxy>
切点配置
配置切点需要用到切点表达式
当通知方法需要拿到切点的参数的时候,就需要参数传递
@Pointcut("execution(* aop.library.BookShop.sell(Book))"+"&&"+"args(book)") public void sell(Book book){} @Before("sell(book)") public void charge(Book book){ System.out.println("这本书叫:"+book); }
切点拦截了aop.library.BookShop.sell(Book)方法,并且将参数Book赋给了sell(book)切点方法,然后通知方法又获取了切点方法中的book
通知配置
//基于切点表达式配置 @Before("execution (* *.*.*(..))")//*号依次为返回类型、包名、类名、方法名 public void charge(Book book){ System.out.println("这本书叫:"+book); } //基于切点配置 @Before("sell(book)")//sell(book)是一个切点 public void charge(Book book){ System.out.println("这本书叫:"+book); }
通知有5种类型:
- 前置通知@Before
- 后置通知(不管是否异常)@After
- 异常通知@AfterThrowing
- 返回通知@AfterReturning
- 环绕通知@Around
查看原文:http://zswlib.com/2016/07/14/spring-aop%e6%b3%a8%e8%a7%a3%e9%85%8d%e7%bd%ae/
相关推荐
在Spring框架中,AOP(面向切面编程)是一...Spring AOP注解的应用使得切面编程更加简单直观,大大简化了对横切关注点的管理。在实际开发中,结合Spring提供的其他特性,如事务管理,可以构建出高效、健壮的后端系统。
总结起来,Spring AOP注解版通过简单易懂的注解,使得面向切面编程变得更加直观和方便。它降低了横切关注点与业务逻辑之间的耦合度,提高了代码的可维护性和复用性。通过合理利用这些注解,开发者可以轻松地实现日志...
要启用注解驱动的 AOP,需要在 Spring 配置文件中添加 `<aop:aspectj-autoproxy>` 标签,或者在 Java 配置类中使用 `@EnableAspectJAutoProxy` 注解。 6. **运行环境** 由于这是一个简单的例子,因此运行环境的...
Spring AOP注解配置是Spring框架提供的一种便捷的面向切面编程的方式,它允许开发者在不使用XML配置的情况下,直接通过注解实现切面的功能。本文将深入探讨Spring AOP的注解配置,并通过具体的代码实例来阐述其使用...
下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### 注解方式 #### 1. 定义切面(Aspect) 在Spring AOP中,切面是包含多个通知(advisors)的类。使用`@Aspect`注解标记切面类,例如: ```java @Aspect ...
在Spring AOP中,我们可以通过注解配置来实现切面编程,从而简化代码并提高可维护性。 首先,我们需要了解Spring AOP中的核心概念: 1. **切面(Aspect)**:切面是关注点的模块化,它包含了横切关注点(如日志)和...
Spring AOP,即Aspect-Oriented Programming(面向切面编程),是Spring框架的重要特性,它为应用程序提供了声明式的企业级服务,如...在实际开发中,熟练掌握Spring AOP的注解配置无疑会极大地提升我们的工作效率。
5. **@EnableAspectJAutoProxy**: 在Spring配置类上添加此注解,启用基于Java代理的AOP支持,这样Spring会自动检测并处理带有@Aspect注解的类。 ```java @Configuration @EnableAspectJAutoProxy public class ...
通过这个"SpringAOP注解方式"的示例,你可以了解到如何在Spring中使用注解定义切面,编写通知,并配置切入点。这种方式大大简化了AOP的配置,使得代码更加模块化和易于维护。学习并掌握Spring AOP的注解使用,对于...
在Spring AOP中,注解配置是一种简洁且直观的使用方式,它极大地简化了配置过程,避免了XML配置的繁琐。以下是使用注解配置Spring AOP的关键知识点: 1. **切面(Aspect)**:切面是AOP的核心概念,它封装了多个...
在使用Spring AOP时,我们可以通过XML配置或注解的方式来定义切面。例如,可以使用`@Aspect`注解定义一个切面类,`@Before`、`@After`等注解来声明通知,`@Pointcut`定义切点表达式。 在实际开发中,Spring AOP广泛...
Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见的,它允许开发者直接在方法上使用注解来定义切面。 Spring AOP中有五种不同类型的的通知(Advice): 1....
2. **注解配置**:Spring 2.5引入了基于注解的AOP配置,可以在切面类上使用@Aspect注解,@Before、@After、@AfterReturning、@AfterThrowing和@Around定义通知,@Pointcut定义切点。例如: ```java @Aspect ...
本篇我们将深入探讨如何使用注解的方式来实现Spring AOP开发。 ### 一、注解基础 在Spring AOP中,主要使用以下几种注解: 1. `@Aspect`:定义一个切面类,切面是AOP的核心,包含通知(advisors)和切点...
这种方式虽然相比注解方式略显繁琐,但对于大型项目或者需要精细控制AOP配置的情况,仍然是一个很好的选择。通过深入理解和实践,我们可以更好地利用Spring AOP来优化我们的应用程序,提高代码的可读性和可维护性。
而注解在Spring AOP中的应用,使得配置变得更加简洁和直观。 首先,让我们理解什么是切片(Aspect)。在AOP中,切片是关注点的一个模块化单元,它封装了跨越多个对象的代码。例如,事务管理就是一个切片,它涉及到...
在Spring XML配置中,我们可以使用`<aop:config>`元素来定义切点表达式,然后使用`<aop:aspect>`元素来声明切面,并将通知方法与切点关联起来。此外,还可以使用注解驱动的配置,通过`@EnableAspectJAutoProxy`注解...
本篇文章将深入探讨Spring AOP注解所依赖的三个核心JAR包:aspectjrt.jar、aspectjweaver.jar以及aopalliance.jar,并阐述它们在AOP框架中的作用。 首先,`aspectjrt.jar`是AspectJ运行时库,它是AspectJ编译器和织...
**Spring AOP 注解使用详解** 在Java世界中,Spring框架以其强大的功能和灵活性而备受推崇,其中AOP(Aspect-Oriented ...通过理解上述概念和实践案例,你将能够更有效地利用Spring AOP注解来优化和组织你的代码。
Spring Aop之AspectJ注解配置实现日志管理的方法 Spring Aop是基于AspectJ实现的面向切面编程(AOP),它提供了一个灵活的方式来实现日志管理。通过使用AspectJ注解,可以轻松地实现日志记录、性能监控、安全检查...