这次的博客一样采用全注解进行配置,东西也比较简单
首先说明,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
相关推荐
在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(面向切面编程)则是其核心特性之一,用于实现横切关注点的模块化,如日志、事务管理等。@AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了...
本文带来的案例是:打印Log,主要介绍@Pointcut切点表达式的@annotation方式,以及 五种通知Advice注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around。 本资源是@Pointcut使用@annotation的方式,结合...
Spring AOP提供了五种不同类型的通知,包括`@Before`、`@AfterReturning`、`@AfterThrowing`、`@Around`和`@After`。`@Before`通知是最简单的一种,它在目标方法执行之前调用。 **3. @Before注解的使用** `@Before`...
6. **考虑与其他通知类型的结合**:除了@AfterReturning,Spring AOP 还提供了@Before、@Around、@After 和@AfterThrowing 等通知类型,可以根据需求灵活选择和组合使用。 通过遵循这些最佳实践,你可以有效地利用 ...
Spring AOP支持五种类型的通知:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:切点是程序执行过程中的...
Spring AOP支持两种主要的通知类型:方法前(Before)、方法后(After)以及环绕通知(Around)。这些通知可以通过在方法上添加特定的注解来实现,例如`@Before`、`@After`和`@Around`。 1. `@Before`注解:在目标...
使用`@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`和`@Around`注解定义不同类型的通知,例如: ```java @After("serviceMethods()") public void logAfterServiceMethod() { System.out.println("服务...
连接点(Joint Point)是程序执行过程中的特定点,通常在Spring AOP中,它代表一个方法的执行。而切入点(Point Cut)是匹配连接点的规则,它定义了一组连接点的集合,可以是一个断言或表达式。Advice与切入点关联,...
**Spring AOP 概念理解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它允许我们通过定义“切面”来模块化横切关注点,比如日志、事务管理、性能监控等。在传统的...
在实际项目中,你可以根据需求定义不同的通知类型,如`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`,以及复杂的切入点表达式。通过这些,你可以实现更精细的控制,如只对特定方法、异常或返回值进行...
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
例如,我们可以使用`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`等注解来声明前置、后置、环绕、返回后和异常后通知,这些通知在切点匹配时执行。 接下来,让我们讨论如何在Spring AOP中...
在 Spring AOP 中,还有其他类型的 Advice,例如 Before Advice、After Advice、Throws Advice 等,每种 Advice 都有其特定的用途和应用场景。 在实际应用中,Spring AOP 可以应用于各种场景,例如日志记录、安全...
有五种不同类型的通知:前置通知(Before)、后置通知(After)、返回通知(After Returning)、异常通知(After Throwing)和环绕通知(Around)。 4. **织入(Weaving)**:织入是将切面应用到目标对象,创建代理...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,比如日志、事务管理、性能监控等。在这个"spring aop练习"中,我们将深入探讨如何使用注解来...
2. **通知(Advice)**:通知是在特定切点执行的代码,它可以是前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。这些通知可以在方法...
`springAOP2`可能是一个包含具体示例代码的目录。`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的...
这里 `<aop:config>` 标签定义了 AOP 的配置,`<aop:aspect>` 标签定义了切面,`<aop:before>` 和 `<aop:after-returning>` 分别定义了前置通知和后置通知。 通过上述两种方式,我们都可以实现对 `UserService` 类...
在这个"SpringAop实例"中,可能包含了演示如何创建和使用这两种配置方式的代码示例。文件列表中的"spring32"可能是指Spring 3.2版本的相关文件,这个版本的Spring对AOP的支持已经相当成熟。 通过学习这个实例,你...
以注解为例,`@Aspect`注解用于定义一个切面类,`@Before`、`@After`、`@Around`、`@AfterReturning`和`@AfterThrowing`分别代表在方法执行前、后、前后以及异常发生后执行的通知类型。这些注解可以与`@Pointcut`...