这次的博客一样采用全注解进行配置,东西也比较简单
首先说明,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的方式,结合...
1、@Aspect放在类头上,把这个类作为一个切面。 2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点...3.5、@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。
演示了spring对aop的before、after、throw、around几种advice的api操作。
会执行interceptorNames中执行的Advice,每个Advice在执行完自己的业务后,会调用MethodInvocation的proceed()方法,将执行的主动权移交给下一个Advice,直到没有下一个Advice为止,在执行完目标对象的方法后,...
Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 1、Before Advice 顾名思义,Before Advice会在目标对象的方法执行之前被调用...
Spring AOP支持不同类型的通知,如前置通知(Before)、后置通知(After)、返回后通知(After-returning)、抛出异常后通知(After-throwing)和环绕通知(Around)。这种机制使得开发者可以在运行时动态地应用这些...
注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before , @Component , @ComponentScan , @ComponentScans , @...
包或子包下的所有方法之前或之后或抛出异常时依次调用id为logIntercepter的类中的before after exception方法 测试用例 package com.spring.test; import javax.annotation.Resource; import org.junit.Test; ...
(3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around (4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式 (5)AOP代理:AOP框架...
AOP 和 Aspect 注解切入 测试 Demo 1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api...基于注解的形式:@Aspect、@PointCut、@Before、@Around、@After、@AfterRunning、@AfterThrowing
一个机遇Spring3的入门小案例,里面主要简单演示了Spirng配置文件如何配置自动扫描包,控制类、服务类、Dao类如何加注解,被IOC扫描...还有AOP例子的演示,有before after afterreturn afterthrow,还有around等的演示
AOP 面向切面的编程思想。 Spring的主要特性之一,今天我整理了一下,小牛试刀,写了一个Demo分享给大家。 切面最主要的功能是在不影响主... 1、执行前通知- @Before 2、执行后通知- @After 3、环绕通知- @Around
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
通知有不同类型,包括"around","before"和"after"通知。许多AOP框架包括Spring,将通知建模成一个拦截器,并且围绕连接点维持一个拦截器链。 切入点(Pointcut):是指匹配连接点的一个断言。通知是和一个切入点...
Aop又叫面向切面编程,其中“通知”是切面的具体实现,分为before(前置通知)、after(后置通知)、around(环绕通知),用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被严重忽视的技术点。但是利用aop...
火龙果软件工程技术中心 在本系列的第一部分,我介绍了如何实现面向方面领域的“HelloWorld”:跟踪和记录方面。利用Spring框架所提供的面向...本文将描述around通知的每个特性,以便您可以在自己的SpringAOP应用程
10.IoC和DI概念理解? IOC(Inverse of Control控制反转):从字面上理解就是控制反转了,将对在自身对象中的一个内置对象的控制反转,反转后...答:Before、After-returning、After-throwing、Around、Introduction;
java8 源码 所有项目demo都基于idea gradle + SpringBoot来开发构建 源代码见code目录,以及源码写的README.md,相关知识点如下...@AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行 @Before
拦截规则@After @Before @Around PointCut JoinPoint Spring常用配置 Bean的Scope Singleton Prototype Request Session GlobalSession SpringEL和资源调用 注入普通字符 ...