前言:

这里就主要演示Spring中Aop使用注解是怎么使用,如果需要了解更多Aop相关概念,可查看相关资料的介绍

一、项目目录  【标记文件为主要文件】

二、各个文件的代码

AopServer.java  【编写切点的文件,就是一些需要被修饰的业务处理】

package aop;import org.springframework.stereotype.Service;@Service
public class AopServer {public void add() {System.out.println("旧版本添加业务处理");}
}

AspectClass.java  【切面文件,定义一些前置后置环绕接口】

package aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
 * @author Luck
 * Aop 插入示例
 */
@Component // 告知Spring容器这是有个Bean对象
@Aspect  // 声明这是一个切面
public class AspectClass {
 
 // 定义切点
 @Pointcut("execution(* aop.AopServer.*(..))")
 public void pointCut() {}
 
 
 @Before("pointCut()") // 可使用复用的切点
 public void start() {
  System.out.println("前面插入方法");
 }
 
 
 @After("execution(* aop.AopServer.*(..))") // 可使用自己定义的规则切点
 public void end() {
  System.out.println("后面插入方法");
 }
 
 @Around("pointCut()")
 public void around(ProceedingJoinPoint joinPoint) throws Throwable {
  System.out.println("环绕插入前。。。。。。。。。。");
  joinPoint.proceed();
  System.out.println("环绕插入后。。。。。。。。。。");
 }
}

AopApplication.java   【测试入口,也是Spring Boot的入口】

package aop;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Configuration
@Controller
@SpringBootApplication
@ComponentScan(basePackages="aop")
public class AopApplication {@Autowiredpublic AopServer sopServer;@RequestMapping(value="/aopDemo")@ResponseBodypublic String aopDemo() {sopServer.add();return "success";}public static void main(String[] args) {SpringApplication.run(AopApplication.class);}}

通过url访问控制台打印结果如下:

三、当一个连接点被一个切面的多个注解混合配置时Aop执行顺序如下:

没有出现异常情况

出现异常情况:

四、当一个连接点被多个切面的多个注解混合配置时Aop执行顺序是不确认的。如果需要确认执行顺序,可通过在Aspect的类上面使用@Order(value)注解来确定多个Aspect的顺序,Order里面的value越小优先级越高

转载于:https://www.cnblogs.com/cairiqiang/p/10085653.html

初步学习Spring Aop使用之注解方式相关推荐

  1. Java框架篇---spring aop两种配置方式

    Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:  1. 使用注解@Aspect来定义一个切面,在切面中 ...

  2. Spring框架(五):Spring事务简述(注解方式)

    一.Spring事务的概述 事务的作用是什么? 简单来说,就是在数据层保障一系列的数据库操作同成功同失败(提交和回滚) Spring事务作用︰在数据层或[业务层]保障一系列的数据库操作同成功同失败. ...

  3. Spring依赖注入(注解方式)

    Spring依赖注入(注解方式) 在Spring中,尽管使用XML配置文件就可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给程序的维护与升级带来一定的困 ...

  4. Spring整合Mybatis之注解方式,(注解整合Junit)

    Spring整合Mybatis之注解方式 我有一篇博客详细写了我自己使用xml的方法Spring整合MyBatis,现在我就把核心配置文件中的每个bean的配置使用注解的方式实现 注解整合MyBati ...

  5. spring的AOP配置之@注解方式

    AOP配置(注解) spring的AOP概念在spring的AOP配置之XML方式这骗博客中详细介绍了,这篇博客就直接开始介绍AOP配置需要那些注解 AOP注解详解 @Aspect 标志为一个切面类 ...

  6. Spring5学习(七):注解方式进行AOP操作 及 多种通知类型的测试

    先来介绍一下AOP操作中的几个术语: 1.连接点:指类里面可以被增强的方法 2.切入点:指实际被增强的方法 3.通知:指实际增强的逻辑部分 4.切面:把通知应用到切入点的过程 Spring框架一般都是 ...

  7. 在Intellij上面导入项目 AOP示例项目 AspectJ学习 Spring AoP学习

    为了学习这篇文章里面下载的代码:http://www.cnblogs.com/charlesblc/p/6083687.html 需要用Intellij导入一个已有工程.源文件原始内容也可见:link ...

  8. 【Spring AOP】基于注解的 AOP 编程

    Spring AOP 基于注解的 AOP 编程的开发 开发步骤 切入点复用 切换动态代理的创建方式(JDK.Cglib) AOP 开发中的一个坑(业务方法互相调用) AOP 知识总结 更多内容请查看笔 ...

  9. 利用Spring AOP与JAVA注解为系统增加日志功能

    Spring AOP一直是Spring的一个比较有特色的功能,利用它可以在现有的代码的任何地方,嵌入我们所想的逻辑功能,并且不需要改变我们现有的代码结构. 鉴于此,现在的系统已经完成了所有的功能的开发 ...

最新文章

  1. 5G前夜 运营商如何实现网络创新?
  2. electron项目中使用jquery不生效的解决方法
  3. json qbytearray 串 转_JSON数据采集网关,json转Modbus RTU串IO口RS485转4~20mA边缘计算智能终端...
  4. 思考:那么些大学生仅凭个人好恶来判断,缺乏是非观
  5. mysql bit类型_Mysql:bit类型的查询与插入
  6. BZOJ 4094 USACO 2013 Dec. Optimal Milking
  7. pytorch: torch.nn.functional.affine_grid(theta,size)
  8. Nginx 服务器安装及配置文件详解
  9. 创建虚拟机并加载镜像文件
  10. idea安装插件方式及个人使用插件
  11. win10添加开机启动项_Win10+Deepin双系统开启启动项调整
  12. 202109-2 非零段划分
  13. 阿里云DMS添加ECS自建数据库
  14. AI一分钟 | 大福利!谷歌2018年将公开内部机器学习培训课程;医疗影像领域今年最大融资出炉!图玛深维获软银中国2亿人民币投资
  15. 使用 certbot 申请泛域名证书和自动续签
  16. Cobertura计算覆盖率
  17. java4android网易云,Android仿网易云音乐播放界面
  18. 2021-09-21KNN——鸢尾花
  19. PyTorch基础-自定义数据集和数据加载器(2)
  20. UI设计和web前端哪个好学?

热门文章

  1. 基于PyQt5的快速开发框架QFramer
  2. 基于corosync+pacemaker实现主从高可用集群
  3. CCNP之BSCI实验6:EIGRP验证
  4. RedisTemplate常用方法总结
  5. Hadoop的资源调度器
  6. python – 在循环中创建不同的变量名
  7. MySQL的视图、事务和索引
  8. CF643E Bear and Destroying Subtrees
  9. 数据结构与算法(十二):八大经典排序算法再回顾
  10. Android Toolbar 标题居中及字体样式自定义