【Spring篇】详解AOP相关知识

这篇具有很好参考价值的文章主要介绍了【Spring篇】详解AOP相关知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎊专栏【Spring】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰


【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
AOP(面向切面编程)是Spring框架中的重要组成部分。它允许在不修改原代码的情况下为程序动态地添加新的功能。如果你也想提高Spring应用的可扩展性,本文将带你深入学习Spring AOP的核心概念。

我们将讲解AOP的作用、实现方式和关键组成部分,包括切面、通知、切入点等。并使用注解的方式实现一个简单的切面示例,让你快速了解AOP的基本用法。学完本文你将能够在Spring项目中应用AOP思想,解耦业务代码,轻松实现新的功能需求。让我们开始AOP之旅!

🌺AOP简介

AOP(Aspect-Oriented Programming)是面向切面编程的一种编程范式,指导开发者如何组织程序结构。它提供了一种将横切关注点(例如日志记录、性能统计、安全检查等)与业务逻辑分离的方法。

在传统的面向对象编程中,业务逻辑通常分散在多个对象或方法中。而使用AOP,我们可以通过定义切面(Aspect)来将这些横切关注点集中起来,并将其应用到多个对象或方法上。

切面是一个跨越多个类和方法的模块化单元,它定义了横切关注点和相应的行为。在程序运行时,AOP框架会根据切面的定义,动态地将其织入到目标对象或方法中,从而实现横切关注点的功能增强。

🌺AOP作用

在不影响原始设计的基础上进行功能增强
原代码不用改,功能就变强了

🌺AOP核心概念

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

切面描述的是 通知的共性功能 与 对应的 切入点 的关系,在 哪个切入点 上 执行哪些通知

🎄AOP入门案例

项目结构
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

在pom.xml文件中导入依赖

<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.3</version>
    </dependency>
  </dependencies>

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

🛸报错解决

这里可能会报错
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

🏳️‍🌈方法一

切换版本号

🏳️‍🌈方法二

这个问题困扰了我很长时间,如何看报错,是无法访问maven的中心仓库,就考虑是maven镜像没有使用上
然后打开设置,发现果然是这个问题
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
切换为下面的配置,问题就解决了
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

创建BookDaoimpl类

package com.example.dao.impl;

import com.example.dao.BookDao;
import org.springframework.stereotype.Repository;

@Repository
public class BookDaoimpl implements BookDao {
    public void save(){
        System.out.println(System.currentTimeMillis());
        System.out.println("book dao save ...");
    }
    public void update(){
        System.out.println("book dao update ...");
    }
}

创建BookDao接口

package com.example.dao;

public interface BookDao {
    public void update();

    void save();
}

创建MyAdvice类

在里面写入共性功能

public void method(){
        System.out.println(System.currentTimeMillis());
    }

在里面写入切入点

private void pt(){}

MyAdvice.java

package com.example.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component  //读到是一个bean
@Aspect     //告诉你去识别下面的内容
public class MyAdvice {

//    切入点(“执行(方法)”)
    @Pointcut("execution(void com.example.dao.BookDao.update())")  //定义切入点
    private void pt(){}                                            //定义切入点

    @Before("pt()")                                                          //绑定切入点和通知
    public void method(){
        System.out.println(System.currentTimeMillis());
    } //定义通知
}

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

创建SpringConfig类

package com.example.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@ComponentScan("com.example")
@EnableAspectJAutoProxy  //告诉程序我们要使用注解开发aop 去识别MyAdvice里面的 @Aspect
public class SpringConfig {
}

创建App类

package com.example;

import com.example.config.SpringConfig;
import com.example.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);
        BookDao bookDao=ctx.getBean(BookDao.class);
        bookDao.save();
    }
}

🎈结果

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

🌺AOP切入点表达式

  • 切入点:要进行增强的方法
  • 切入点表达式:要进行增强的方法的描述方式

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

⭐使用通配符加速配置

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
我们修改一下MyAdvice的代码,使用通配符表达式来写
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

⭐书写技巧

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架

🎍AOP通知类型

【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架
AOP为我们提供了一种实现横向功能的clean方法,可以减少代码重复,降低模块间耦合。但它的使用需要我们思考非函数性需求的抽象与封装。在接下来的Spring学习中,我们还会看到AOP在事务管理等方面的典型应用。

本文只是AOP入门,实际应用中我们还需要学习更多知识,如AspectJ的使用、AOP性能优化等。如果你有任何疑问或想法,欢迎在评论区与我互动。让我们携手学习AOP,Build更优秀的Spring应用程序!
【Spring篇】详解AOP相关知识,Spring,spring,java,数据库,web框架文章来源地址https://www.toymoban.com/news/detail-712935.html

到了这里,关于【Spring篇】详解AOP相关知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring高手之路-Spring的AOP失效场景详解

    目录 前言 1.非Spring管理的对象 2.同一个Bean内部方法调用 3.静态方法 4.final方法 5.异步方法 总结 Spring的AOP(面向切面编程)是一种强大的技术,用于在应用程序中实现横切关注点的模块化。虽然Spring的AOP在大多数情况下都是有效的,但在某些场景下可能会失效。下面来分析

    2024年01月21日
    浏览(32)
  • Spring——AOP(图文详解)

    AOP 又名 Aspect Oriented Programming 意为 ‘面向切面编程’通过预编译和运行期间动态代理来实现程序功能的统一维护的一种技术。 AOP 思想是OOP(面向对象)的延续 在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面), AOP 是软件行业的热点,也是Spring框

    2024年02月11日
    浏览(21)
  • spring 详解六 AOP

    AOP,Aspect Oriented Programming,面向切面编程 ,是对面向对象编程OOP的升华,OOP是纵向对事物的抽象,一个对象包含属性信息和动态的方法信息等,而AOP是横向对不同事物的抽象,属性与属性、方法与方法、对象与对象都可以组成一个切面,而这种思想叫做界面编程 名称     

    2024年02月15日
    浏览(20)
  • Spring AOP 代码加案例详解

    学习AOP就要先学习代理模式,这样AOP的学习就简单了。 代理模式是Java常见的设计模式之一,包含:静态代理和动态代理。 静态代理 通过案例感受静态代理:租房子问题。 房东需要将房子出租,如果都亲力亲为太麻烦了:房东要自己出去贴广告,带租客看房,讨价还价,签

    2024年02月01日
    浏览(23)
  • Spring AOP入门指南:轻松掌握面向切面编程的基础知识

    1.1 什么是AOP? AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程 我们都知道OOP是一种编程思想,那么AOP也是一种编程思想,编程思想主要的内容就是指导程序员该如何编写程序,所以它们两个是不同

    2024年02月03日
    浏览(51)
  • 【Spring教程16】Spring框架实战:详解解读AOP配置管理中AOP切入点表达式和通知类型

    欢迎大家回到《 Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《 AOP的工作流程和AOP的核心概念》 前面的案例中,有涉及到如下内容: 对于

    2024年02月04日
    浏览(28)
  • 【Spring教程21】Spring框架实战:Spring事务简介、AOP事务管理、代码示例全面详解

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《AOP(面对切面编程)知识总结》 事务作用:在数据层保障一系列的数据库

    2024年02月04日
    浏览(36)
  • Java spring Aop实战

    Spring AOP 1. 实战 1.实战 创建工程和依赖 数据库建表 实体类 Mapper 接口 方法一 方法二 Service 包 接口1: 实现接口 Mapper Mapper 1 Mapper 2 配置xml文件 Xml 1 Xml 2 Spring 配置文件 Mybatis配置文件 测试类 数据库结果 测试2 测试3 不符合业务逻辑,加入事物 头文件 只能在service实现类加 重

    2024年02月15日
    浏览(28)
  • 【Spring】AOP进阶-JoinPoint和ProceedingJoinPoint详解

    在Spring AOP中,JoinPoint和ProceedingJoinPoint都是关键的接口,用于在切面中获取方法的相关信息以及控制方法的执行。它们的主要区别在于它们在AOP通知中的使用方式和功能。 Joinpoint是面向切面编程(AOP)中的一个重要概念,指的是在应用程序执行过程中可以被拦截的特定点。在

    2024年02月04日
    浏览(20)
  • spring AOP中pointcut表达式详解

    📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂领域博主】!😜😜😜 喜欢java和python,平时比较懒,能用程序解决的坚决不手动解决😜😜😜 ✨ 如果有对【java】感兴趣的【小可

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包