SpringBoot Aop入门

Spring boot 入门教程-AOP详细介绍及使用 面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等” 阅读详情

今天重新学习了一下spring aop的相关知识,结合springBoot对Aop的支持,整理了一下学习成果。这只是简单的入门学习,下面演示下代码。

1. 声明一个aop注解

import java.lang.annotation.*;

/**
 * 声明一个注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Action {
    String name();
}

这个注解中有一个属性name,为了后面演示注解式切面的时候使用。

2. 引入springboot aop的pom文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

这里我使用的springboot版本是2.1.2.RELEASE,需要在parent中指定其版本号:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
    <relativePath/>
</parent>

3.编写被切方法:

在这里写两个类,第一个用来演示注解式切面,第二个用来演示方法切面。

  1. 注解式
import com.xqnode.learning.common.aop.annotation.Action;
import org.springframework.stereotype.Service;

@Service
public class AopAnnotationService {

    @Action(name = "注解式拦截doSomething操作")
    public void doSomething() {}
}

2.方法式:

import org.springframework.stereotype.Service;

@Service
public class AopMethodService {

    public void doSomething() {}
}

4.编写切面类

import java.lang.reflect.Method;

@Aspect
@Component
public class LogAspect {

    @Pointcut("@annotation(com.xqnode.learning.common.aop.annotation.Action)")
    public void annotationPointCut() {
    }

    @Before("annotationPointCut()")
    public void before(JoinPoint joinPoint) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        Action annotation = method.getAnnotation(Action.class);
        System.out.println("注解式拦截:" + annotation.name());
    }

    @After("execution(* com.xqnode.learning.service.AopMethodService.* (..))")
    public void after(JoinPoint joinPoint) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        System.out.println("方法式拦截:" + method.getName());
    }
}

使用注解式切面需要声明一个方法annotationPointCut(),指定切面注解的类型,这里我们指定的是前面我编写的注解@Pointcut("@annotation(com.xqnode.learning.common.aop.annotation.Action)"),在AopAnnotationService 的doSomething方法上我对其标记了注解,所以这个注解式切面会作用于这个类的这个方法上。
@Before是表示在方法执行之前执行的代码,这里我们简单打印了一句注解的名称。
@After(“execution(* com.xqnode.learning.service.AopMethodService.* (…))”)中的表达式的意思是对AopMethodService的所有方法都进行切面操作,并且是在方法执行完成之后执行after方法中的代码,这里我打印了所有方法的名称。
在切面类中需要定义切面方法用于响应响应的目标方法,切面方法即为通知方法,通知方法需要用注解标识,AspectJ 支持 5 种类型的通知注解:

@Before: 前置通知, 在方法执行之前执行
@After: 后置通知, 在方法执行之后执行 。
@AfterRunning: 返回通知, 在方法返回结果之后执行
@AfterThrowing: 异常通知, 在方法抛出异常之后
@Around: 环绕通知, 围绕着方法执行

5. 验证

我们编写一个测试类验证下结果:

import com.xqnode.learning.service.AopAnnotationService;
import com.xqnode.learning.service.AopMethodService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class LearningApplicationTests {

    @Autowired
    AopAnnotationService aopAnnotationService;

    @Autowired
    AopMethodService aopMethodService;

    @Test
    public void contextLoads() {
    	//注解式切面
        aopAnnotationService.doSomething();
        //方法切面1
        aopMethodService.doSomething();
        //方法切面2
        aopMethodService.otherThing();
    }
}

do
可以看到,我们的注解式切面和方法式切面都生效了。注解式的切面比较灵活,而方法式的切面作用的范围广,大家可以根据实际需要选择适合自己的切面方式。

SpringBoot入门教程:AOP 1. 需要在Application中开启AOP @EnableAspectJAutoProxy(exposeProxy = true) 2. 引入aop依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 3. @Aspect 阅读详情

相关推荐

aop切面demo,基于spring boot制作,很简单实用,可以自己尝试小写框架

aop切面demo,基于spring boot制作,很简单实用,可以自己尝试小写框架

Springboot入门 -- AOP

springboot -- AOP

weixin_52234593的博客 247

spring aop 五个依赖jar

spring aop依赖包,想要的可以下,我用的spring 3.1,其他版本的不知道支不支持。

Springboot入门:AOP详解

首先什么事AOP; 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 也就是说AOP编程是通过不删改原有代码的情况下对代码功能进行增强的一种编程方式。

weixin_48456383的博客 825

告别手动输入!用Access批量导入307种土壤数据到SWAT模型(附完整MDB操作流程)

本文详细介绍了如何利用Microsoft Access批量导入307种土壤数据到SWAT模型,显著提升数据录入效率。通过解析usersoil表结构、提供Access操作指南和VBA自动化脚本,帮助环境工程师避免手动输入错误,实现高效数据管理。文章还包含性能优化技巧和常见错误解决方案,是SWAT模型用户的实用指南。

weixin_28366053的博客 324

Emotion-LLaMA实战指南:从零构建多模态情感识别系统(附Python代码)

本文提供了Emotion-LLaMA多模态情感识别系统的实战指南。通过详细的步骤,指导读者从零搭建开发环境、运行本地Demo、理解模型架构,并完成数据处理与模型训练。该创新模型融合视觉、听觉与文本信息,实现更精准、接近人类理解的情感分析与推理,并附有完整的Python代码实现。

weixin_29094775的博客 415

SpringBoot AOP 入门:日志、事务、权限的切面编程

的前提下,统一给方法添加功能:日志、事务、权限校验、性能监控、防重复提交……企业必备:日志、权限、事务、监控、限流全靠 AOP。如果每个方法都写一遍,代码爆炸、冗余、难维护。本篇文章就来讲讲 AOP,再带你实现。七、AOP + 事务(自动管理事务)AOP = 不修改代码,统一增强方法。八、AOP 自定义注解实现权限校验。一、什么是 AOP?AOP 统一写一次,全局生效。2. 为什么要用 AOP?:要加的功能(日志、权限)五、最简单的 AOP 日志。方法名、参数、返回值、耗时。2. AOP 切面校验权限。

。。。 758

Quartus II 13.1 出现 ‘‘can‘t find design entity <Filename>‘‘ 问题的解决方法

Quartus II 13.1 出现 ''can't find design entity '' 问题的解决方法

qq_62076686的博客 1万+

SpringBoot默认开启AOP,采用Cglib代理方式?(Spring AOP快速入门)

Spring AOP快速入门,为何SpringBoot不需要手动开启AOP功能?

qq_41563912的博客 5555

从零开始:Vivado中自定义串口通信IP核的完整实现

本文详细介绍了在Vivado中从零开始实现自定义串口通信IP核的完整流程,包括Verilog核心代码编写、仿真验证、IP核封装与参数化配置技巧。通过AXI-Lite总线实现动态配置,提升FPGA开发效率,适用于各种嵌入式系统通信需求。

weixin_29274969的博客 325

2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价

此外,在ArcGIS平台下,“易发性图预测(多进程)”工具的运行时间为2h 48m 3s,“易发性图预测(单进程)”工具的运行时间为5h 19m 27s,运行时间缩短了近2h 31m 24s,运行效率提高了47.39%。在ArcGIS Pro平台下,“易发性图预测(多进程)”工具的运行时间为20m 12s,“易发性图预测(单进程)”工具的运行时间为1h 26m 47s,将运行时间缩短了近1h 6m 35s,运行效率提高了76.72%。滑坡的发生受各种影响因素的影响,目前,影响因素的选择没有一个统一的标准。

2301_77310370的博客 1466

SpringBoot核心框架之AOP详解

SpringBoot核心框架之AOP详解

weixin_54412689的博客 2711

2.数字芯片时序正确的前提—Max-transition

芯片物理设计中最基本的Max-transition检查

weixin_43868998的博客 5419

SpringBoot工程中 AOP入门实践

1.AOP简介 AOP(Aspect Orient Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程(OOP)的一种补充和完善。实际项目中我们通常将面向对象理解为一个静态过程(例如一个系统有多少个模块,一个模块有哪些对象,对象有哪些属性),面向切面理解为一个动态过程(在对象运行时动态织入一些扩展功能或控制对象执行)。如图: AOP 与 OOP 字面意思相近,但其实两者完全是面向不同领域的设计思想。实际项目中我们通常将面向对象理解为一个静态过程(例如一个系统有多少.

zhanglide0526的博客 394

2026华为OD机试真题 9月27日 新系统 【均衡调度】

华为OD机试真题 新系统 9月27号【均衡调度】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【均衡调度】多语言题解。

qq_45776114的博客 1760

【Davinci开发】:CS接口创建及连接

AUTOSAR SWC之间添加CS-port :详细讲解step

2525

spring boot 入门3 如何在springboot 上使用AOP

Aop是spring的两大核心之一 那么如何在springboot中采用注解的形式实现aop那? 1)首先我们定义一个相关功能的切面类 并 采用@Aspect 注解来声明当前类为切面 同时采用@Component 注解将当前类交与spring管理 @Aspect @Component public class HttpAspect {} 2)定义切点 声明一个方...

weixin_30645617的博客 161

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HoRain云--SpringBoot AOP入门:优雅解耦指南

本文介绍了SpringBoot AOP(面向切面编程)的核心概念和使用方法。AOP通过将横切关注点(如日志、事务、安全等)与核心业务逻辑分离,提升代码的可维护性和整洁度。文章详细讲解了5种通知类型:前置通知(@Before)、后置通知(@After)、返回通知(@AfterReturning)、异常通知(@AfterThrowing)和环绕通知(@Around),并提供了实际应用场景和代码示例。同时,文章还分享了SpringBoot中快速集成AOP的步骤,强调AOP与IoC共同构成了Spring框架的两大核

2401_86544677的博客 881

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

spring boot入门(五) springboot的切面编程aop。最完整、简单易懂、详细的spring boot教程。

本文紧接spring boot入门(四)。 aop是面向切面编程,什么是面向切面编程呢?在方法的执行中,方法的执行一般分为方法执行前和方法执行后,有可以根据传入方法的参数、方法的返回值等进行分类。此处我们讲aop,仅仅讲最为基础的方法执行前切面和方法执行后切面。 1.引入pom依赖,代码如下: &lt;dependency&gt; &lt;groupId&gt;org.springf...

翻过一座座山 7122

SpringBoot AOP(面向切面编程)-入门需掌握的基础

当某个角色在访问某个功能时,如果该功能有权限的要求,则应该在访问功能的核心代码之前加入权限的验证,判断当前请求的用户的权限是否满足功能方法的权限要求,如果满足,则继续执行核心功能代码;After:在目标方法执行之后执行,无论方法是否抛出异常。AfterReturning:在目标方法成功执行并返回结果后执行。Around:在目标方法执行前后都可以执行,可以控制方法的执行过程。2、@PointCut 写在方法上 方法的内容没有严格要求。Before:在目标方法执行之前执行。

weixin_74972203的博客 726

11-SpringBoot3入门-整合aop

AOP(Aspect Oriented Programming),面向切面编程。比如在service层的所有类的所有方法执行前打印日志信息。2)连接点(Joinpoint):即。1)切面(Aspect):提供。

qq_45939907的博客 578

springboot aop使用_Springboot 完整搭建快速入门,必看!

点击上方蓝字关注我们作者:Cansluck优快云博客:https://blog.youkuaiyun.com/xgx120413前言手把手教你Springboot微服务项目搭建快速入门,通过本文学习Springboot的搭建快速入门,掌握微服务大致的配置服务,后续将会继续将核心组件引入到项目中,欢迎关注,点赞,转发。Springboot项目搭建将会从以下几个方面进行项目搭建快速入门一、项目创建新建...

weixin_39862097的博客 263

Spring Boot AOP 入门指南:掌握基本用法

接着,创建一个切面类,利用。

LiamHong_的博客 1032

Spring Boot入门系列之:十一、Spring Boot Aop

spring-boot-aop 什么是aop 面向切面的程序设计(Aspect-oriented programming,AOP,又译作面向方面的程序设计、剖面导向程序设计)是计算机科学中的一种程序设计思想,旨在将横切关注点与业务主体进行进一步分离,以提高程序代码的模块化程度。通过在现有代码基础上增加额外的通知(Advice)机制,能够对被声明为“切点(Pointcut)”的代码块进行统一管理与装...

leone的博客 1682

Spring AOP从入门到放弃之概念以及Spring Boot AOP demo

AOP核心概念 1、横切关注点 对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点 2、切面(aspect)-》(通知+切点) 类是对物体特征的抽象,切面就是对横切关注点的抽象。 通知+切点 意思就是所有要被应用到增强(advice)代码的地方。(包括方法的方位信息) 3、连接点(...

chuoduanzhi4844的博客 126

springboot+aop简单日志入门

关于如何集成springboot请C友自行搜索,本人在IDEA上已经集成了springboot,下面直接开始简单的aop日志入门。 声明:代码部分只展示部分关键代码!!! 1.首先在maven项目中pom.xml文件中引入下面jar包 <!--引入AOP依赖Start--> <dependency> <groupId&g...

qq_38759137的博客 189
上一篇: Springboot文件上传报错:failed to convert java.lang.String to org.springframework.util.unit.DataSize
下一篇: SpringBoot获取Bean
程序员青戈
程序员青戈 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 3万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员青戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值