这篇文章主要介绍了SpringAOP中的注解配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用注解实现SpringAOP的功能:
例子:
//表示这是被注入Spring容器中的 @Component //表示这是个切面类 @Aspect public class AnnotationHandler { /* * 在一个方法上面加上注解来定义切入点 * 这个切入点的名字就是这个方法的名字 * 这个方法本身不需要有什么作用 * 这个方法的意义就是:给这个 @Pointcut注解一个可以书写的地方 * 因为注解只能写在方法、属性、类的上面,并且方法名作为切入点的名字 * */ //简单来说就是将查到的方法用myPointCut()方法名代替 @Pointcut("execution(public * com.briup.aop.service..*.*(..))") public void myPointCut(){ } //注:这里面的所有方法的JoinPoint类型参数都可以去掉不写,如果确实用不上的话 @Before("myPointCut()")//在myPointCut()中查到的方法之前切入 public void beforeTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" before..."); } /* * @After和@AfterReturning * * @After标注的方法会在切入点上的方法结束后被调用(不管是不是正常的结束). * @AfterReturning标注的方法只会在切入点上的方法正常结束后才被调用. * */ @After("myPointCut()")//在myPointCut()中查到的方法之后切入 public void afterTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" after..."); } @AfterReturning("myPointCut()") public void afterReturningTest(JoinPoint p){ System.out.println(p.getSignature().getName()+" afterReturning"); } @Around("myPointCut()")//在myPointCut()中查到的方法环绕切入 public Object aroundTest(ProceedingJoinPoint pjp)throws Throwable{ System.out.println(pjp.getSignature().getName()+" is start.."); //调用连接点的方法去执行 Object obj = pjp.proceed(); System.out.println(pjp.getSignature().getName()+" is end.."); return obj; } //在切入点中的方法执行期间抛出异常的时候,会调用这个 @AfterThrowing注解所标注的方法 @AfterThrowing(value="myPointCut()",throwing="ex") public void throwingTest(JoinPoint p,Exception ex){ System.out.println(p.getSignature().getName()+" is throwing..."+ex.getMessage()); } }
xml配置:注意给例子中使用的其他的类上面也使用注解
<aop:aspectj-autoproxy/> <context:component-scan base-package="com.briup.aop"/> <!-- 让Spring扫描注解 --> <context:component-scan base-package="com.briup.aop"></context:component-scan> <!-- 识别AspectJ的注解 --> <aop:aspectj-autoproxy/>
注意:<aop:aspectj-autoproxy proxy-target-class="true"/>这样配置则是强制使用CGLIB进行代理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍详解spring 配置的两种方式:JAVA配置和注解配置,包括了详解spring 配置的两种方式:JAVA配置和注解配置的使用技巧和注意事项,需要的朋友参考一下 众所周知,spring自从3.0开始以后,就全面推荐使用配置的方式进行代码编写了,这种方式确实可以避免了之前一个项目里面一大堆XML的情况,毕竟XML的可读性实在不怎么样,而且一会写JAVA,一会写XML,确实还是蛮麻烦的
本文向大家介绍Spring中的事务操作、注解及XML配置详解,包括了Spring中的事务操作、注解及XML配置详解的使用技巧和注意事项,需要的朋友参考一下 事务 事务全称叫数据库事务,是数据库并发控制时的基本单位,它是一个操作集合,这些操作要么不执行,要么都执行,不可分割。例如我们的转账这个业务,就需要进行数据库事务的处理。 转账中至少会涉及到两条 SQL 语句: 上面这两条 SQL 就可以要看成
本文向大家介绍详解spring注解配置启动过程,包括了详解spring注解配置启动过程的使用技巧和注意事项,需要的朋友参考一下 最近看起spring源码,突然想知道没有web.xml的配置,spring是怎么通过一个继承于AbstractAnnotationConfigDispatcherServletInitializer的类来启动自己的。鉴于能力有限以及第一次看源码和发博客,不到
本文向大家介绍Eclipse中maven的配置详解,包括了Eclipse中maven的配置详解的使用技巧和注意事项,需要的朋友参考一下 1. 需要准备:apache-maven-3.2.3.zip包 Repository.rar本地仓库 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍ASP.NET Core中的配置详解,包括了ASP.NET Core中的配置详解的使用技巧和注意事项,需要的朋友参考一下 ASP.NET Core 提供了一个灵活可扩展,基于键值的配置系统. 但是配置系统独立于ASP.NET Core是Microsoft.Extensions 类库的部分. 它可以用于任何类型的应用程序 1、以键-值对的形式读取配置 appsettings.json
本文向大家介绍详解Spring Aop实例之AspectJ注解配置,包括了详解Spring Aop实例之AspectJ注解配置的使用技巧和注意事项,需要的朋友参考一下 上篇《Spring Aop实例之xml配置》中,讲解了xml配置方式,今天来说说AspectJ注解方式去配置spring aop。 依旧采用的jdk代理,接口和实现类代码请参考上篇博文。主要是将Aspect类分享一下: applic