首先说明,SpringAop需要有aspectjweaver这个依赖,要先加入到maven中;
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.8.8</version>
- </dependency>
其次,对于进行增强的方法,需要将其所在类加入到ioc容器中,如下:
- @Component
- public class HelloWorld {
- public void sayHello (){
- System.out.println("Hello World!");
- }
- }
接下来需要声明切面,切点,通知,一样需要在spring的ioc容器内,且需要@Aspect注解,
@Aspect是让spring对该进行aop扫描,这样才能扫描到该类内部的切点、通知的注解,如下:
- @Aspect
- @Component
- public class HelloWorldAspect {
- @Pointcut(value = "execution(* aop..sayHello(..))")
- public void pointCut (){
- }
- @Before(value = "pointCut()")
- private void beforeAdvice (){
- System.out.println("===========before advice param:");
- }
- @After( value = "pointCut()")
- private void afterAdvice (){
- System.out.println("===========after advice param:");
- }
- @Around(value = "pointCut()")
- private void aroundAdvice (ProceedingJoinPoint pjp) throws Throwable{
- System.out.println("===========before advice param: around");
- pjp.proceed();
- System.out.println("===========after advice param: around");
- }
- }
这样一来,我们就完成了切点匹配,前置、后知、环绕通知的声明,然后就可以进行测试了
测试代码如下:
- @Test
- public void testAop (){
- ApplicationContext ctx = new AnnotationConfigApplicationContext(AopConfig.class);
- HelloWorld hw = ctx.getBean(HelloWorld.class);
- hw.sayHello();
- }
输出的结果如下:
- ===========before advice param: around
- ===========before advice param:
- Hello World!
- ===========after advice param: around
- ===========after advice param:
所以我们得到结果:
前置时 环绕通知 -> 前置通知
后置时 环绕通知 -> 后置通知
另外spring中还有@AfterReturning、@AfterThrowing,这些将在下一次再写了,如果想早点看的话,可以参考下面的这个链接:
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle
相关推荐
本文带来的案例是:打印Log,主要介绍@Pointcut切点表达式的@annotation方式,以及 五种通知Advice注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around。 本资源是@Pointcut使用@annotation的方式,结合...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(面向切面编程)则是其核心特性之一,用于实现横切关注点的模块化,如日志、事务管理等。@AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了...
- **注解配置**:Spring 2.5引入了基于注解的AOP,可以直接在切面类上使用@Aspect,@Before、@After、@Around等注解定义通知,@Pointcut定义切点。 4. **切点表达式** - 切点表达式是用于匹配连接点的语句,如`...
Spring AOP提供了五种不同类型的通知,包括`@Before`、`@AfterReturning`、`@AfterThrowing`、`@Around`和`@After`。`@Before`通知是最简单的一种,它在目标方法执行之前调用。 **3. @Before注解的使用** `@Before`...
在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...
- @Around:环绕通知,围绕着方法执行。 7. AspectJ切入点表达式 AspectJ切入点表达式用于指定通知应该在哪些连接点(如方法执行)应用。可以通过利用方法签名编写切入点表达式,也可以合并切入点表达式。还可以...
6. **考虑与其他通知类型的结合**:除了@AfterReturning,Spring AOP 还提供了@Before、@Around、@After 和@AfterThrowing 等通知类型,可以根据需求灵活选择和组合使用。 通过遵循这些最佳实践,你可以有效地利用 ...
3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的通知类型。 4. **丰富的切入点表达式语言**:Spring ...
22. **Schema-based配置**:包括 `<aop:config/>`, `<aop:aspect/>`, `<aop:pointcut/>`, `<aop:around/>`, `<aop:before/>`, `<aop:after/>`, `<aop:declare-parents/>`, 和 `<aop:scoped-proxy/>`,这些XML元素...
Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...
在实际项目中,你可以根据需求定义不同的通知类型,如`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`,以及复杂的切入点表达式。通过这些,你可以实现更精细的控制,如只对特定方法、异常或返回值进行...
使用`@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`和`@Around`注解定义不同类型的通知,例如: ```java @After("serviceMethods()") public void logAfterServiceMethod() { System.out.println("服务...
连接点(Joint Point)是程序执行过程中的特定点,通常在Spring AOP中,它代表一个方法的执行。而切入点(Point Cut)是匹配连接点的规则,它定义了一组连接点的集合,可以是一个断言或表达式。Advice与切入点关联,...
Spring AOP支持两种主要的通知类型:方法前(Before)、方法后(After)以及环绕通知(Around)。这些通知可以通过在方法上添加特定的注解来实现,例如`@Before`、`@After`和`@Around`。 1. `@Before`注解:在目标...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和抽象化的方法来处理系统中的交叉关注点,如日志、事务管理、安全性等。本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际...
**Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...
在提供的 `lib` 压缩包中,应包含 Spring AOP 和 Spring IOC 相关的 jar 包,如 `spring-aop-x.x.x.jar` 和 `spring-context-x.x.x.jar` 等,它们是使用这两个功能的基础。请确保引入正确的版本,并正确配置到项目的...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,比如日志、事务管理、性能监控等。在这个"spring aop练习"中,我们将深入探讨如何使用注解来...
在这个版本中,Spring AOP支持基于注解的切面定义,比如`@Aspect`、`@Before`、`@After`等,同时也支持基于XML配置的切面定义。这个jar包使得Spring应用程序能够方便地利用AOP特性,无需引入额外的编译工具或构建...
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...