初步学习Spring Aop使用之注解方式
前言:
这里就主要演示Spring中Aop使用注解是怎么使用,如果需要了解更多Aop相关概念,可查看相关资料的介绍
一、项目目录 【标记文件为主要文件】
二、各个文件的代码
AopServer.java 【编写切点的文件,就是一些需要被修饰的业务处理】
package aop;import org.springframework.stereotype.Service;@Service public class AopServer {public void add() {System.out.println("旧版本添加业务处理");} }
AspectClass.java 【切面文件,定义一些前置后置环绕接口】
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 插入示例
*/
@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使用之注解方式相关推荐
- Java框架篇---spring aop两种配置方式
Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中 ...
- Spring框架(五):Spring事务简述(注解方式)
一.Spring事务的概述 事务的作用是什么? 简单来说,就是在数据层保障一系列的数据库操作同成功同失败(提交和回滚) Spring事务作用︰在数据层或[业务层]保障一系列的数据库操作同成功同失败. ...
- Spring依赖注入(注解方式)
Spring依赖注入(注解方式) 在Spring中,尽管使用XML配置文件就可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给程序的维护与升级带来一定的困 ...
- Spring整合Mybatis之注解方式,(注解整合Junit)
Spring整合Mybatis之注解方式 我有一篇博客详细写了我自己使用xml的方法Spring整合MyBatis,现在我就把核心配置文件中的每个bean的配置使用注解的方式实现 注解整合MyBati ...
- spring的AOP配置之@注解方式
AOP配置(注解) spring的AOP概念在spring的AOP配置之XML方式这骗博客中详细介绍了,这篇博客就直接开始介绍AOP配置需要那些注解 AOP注解详解 @Aspect 标志为一个切面类 ...
- Spring5学习(七):注解方式进行AOP操作 及 多种通知类型的测试
先来介绍一下AOP操作中的几个术语: 1.连接点:指类里面可以被增强的方法 2.切入点:指实际被增强的方法 3.通知:指实际增强的逻辑部分 4.切面:把通知应用到切入点的过程 Spring框架一般都是 ...
- 在Intellij上面导入项目 AOP示例项目 AspectJ学习 Spring AoP学习
为了学习这篇文章里面下载的代码:http://www.cnblogs.com/charlesblc/p/6083687.html 需要用Intellij导入一个已有工程.源文件原始内容也可见:link ...
- 【Spring AOP】基于注解的 AOP 编程
Spring AOP 基于注解的 AOP 编程的开发 开发步骤 切入点复用 切换动态代理的创建方式(JDK.Cglib) AOP 开发中的一个坑(业务方法互相调用) AOP 知识总结 更多内容请查看笔 ...
- 利用Spring AOP与JAVA注解为系统增加日志功能
Spring AOP一直是Spring的一个比较有特色的功能,利用它可以在现有的代码的任何地方,嵌入我们所想的逻辑功能,并且不需要改变我们现有的代码结构. 鉴于此,现在的系统已经完成了所有的功能的开发 ...
最新文章
- 5G前夜 运营商如何实现网络创新?
- electron项目中使用jquery不生效的解决方法
- json qbytearray 串 转_JSON数据采集网关,json转Modbus RTU串IO口RS485转4~20mA边缘计算智能终端...
- 思考:那么些大学生仅凭个人好恶来判断,缺乏是非观
- mysql bit类型_Mysql:bit类型的查询与插入
- BZOJ 4094 USACO 2013 Dec. Optimal Milking
- pytorch: torch.nn.functional.affine_grid(theta,size)
- Nginx 服务器安装及配置文件详解
- 创建虚拟机并加载镜像文件
- idea安装插件方式及个人使用插件
- win10添加开机启动项_Win10+Deepin双系统开启启动项调整
- 202109-2 非零段划分
- 阿里云DMS添加ECS自建数据库
- AI一分钟 | 大福利!谷歌2018年将公开内部机器学习培训课程;医疗影像领域今年最大融资出炉!图玛深维获软银中国2亿人民币投资
- 使用 certbot 申请泛域名证书和自动续签
- Cobertura计算覆盖率
- java4android网易云,Android仿网易云音乐播放界面
- 2021-09-21KNN——鸢尾花
- PyTorch基础-自定义数据集和数据加载器(2)
- UI设计和web前端哪个好学?