首页 > 其他分享 >【Spring】AOP简介_工作原理_代理模式-静态代理

【Spring】AOP简介_工作原理_代理模式-静态代理

时间:2024-05-25 08:59:05浏览次数:22  
标签:对象 Spring void 代理 通知 AOP public

1、简介

  • Spring的AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要部分,它是对OOP(Object Oriented Programming,面向对象编程)的一种补充。
  • 在面向对象编程中,我们主要关注的是对象以及它们之间的关系,但在实际开发中,我们还会遇到一些与业务逻辑无关但又需要统一处理的问题,如日志记录、事务管理、安全性检查等。这些问题通常被称为横切关注点(cross-cutting concerns)。

2、工作原理

Spring AOP通过引入切面(Aspect)、通知(Advice)、切点(Pointcut)等概念,提供了一种在不修改现有代码的情况下,将横切关注点动态地切入到业务逻辑中的方法。具体来说,Spring AOP的工作原理如下:

  1. 切面(Aspect):切面是通知和切点的结合,它定义了横切关注点。在Spring中,切面通常使用@Aspect注解进行声明,并定义通知和切点。
  2. 通知(Advice):通知是切面的具体实现,它包含了要切入到目标对象方法的横切逻辑。Spring AOP支持五种类型的通知:前置通知(Before advice)、后置通知(After advice)、返回通知(After returning advice)、异常通知(After throwing advice)和环绕通知(Around advice)。
  3. 切点(Pointcut):切点定义了切面作用在何处,即哪些类的哪些方法需要被增强。在Spring中,切点通常使用AspectJ表达式进行定义。
  4. 连接点(Join point):连接点是程序执行过程中的一个点,如方法的执行或异常的处理。在Spring AOP中,连接点通常表示方法的执行。
  5. 目标对象(Target object):目标对象是被通知的对象,即包含需要被增强方法的对象。
  6. 代理对象(Proxy object):代理对象是一个实现了与目标对象相同接口的类,它包含了对目标对象的引用,并覆盖了目标对象的需要被增强的方法。当调用代理对象的方法时,会触发相应的通知,并最终调用目标对象的方法。

3、代理模式

3.1静态代理

3.1.1简介

  • 静态代理是在编译时就已经确定代理类和真实类的关系。代理类和真实类实现相同的接口,代理类持有真实类的引用,并在方法调用前后执行一些额外的操作。
  • 静态代理的缺点是需要为每个真实类编写一个代理类,当真实类的接口发生变化时,代理类也需要相应地修改。因此,它适用于真实类数量不多、接口比较稳定的情况。
  • 静态代理在程序运行前,代理类的.class文件就已经存在,由程序员创建代理类或特定工具自动生成源代码再对其编译。

3.1.2代码示例

  • 超市代理工厂完成销售,做活动,送货等工作

创建一个共同的接口

public interface Platform {
void product();
}
创建一个真实对象 ( 目标对象 )
public class Factory implements Platform{
@Override
public void product() {
System.out.println("工厂生产产品");
}
}
创建一个代理对象
public class VBuss implements Platform{
private Factory factory;
@Override
public void product() {
add_friend();
share();
if (factory==null)
factory=new Factory();
factory.product();
send_goods();
}
public void add_friend(){
System.out.println("销售");
}
public void share(){
System.out.println("做活动");
}
public void send_goods(){
System.out.println("送货");
}
}
创建测试
public class Test {
public static void main(String[] args) {
Platform platform=new VBuss();//new Factory();
platform.product();
}
}

标签:对象,Spring,void,代理,通知,AOP,public
From: https://blog.csdn.net/wosixiaokeai/article/details/139124315

相关文章

  • 【Spring】spring的IoC概念
    1、IoC的基本概念IoC,即控制反转,是一种设计思想,用于降低代码之间的耦合度。在传统的程序设计中,对象的创建和对象之间的依赖关系通常由对象自身来管理。而在IoC思想中,这种控制权被“反转”了,交由一个外部容器(在Spring中就是IoC容器)来管理。IoC也被称为依赖注入(DependencyInject......
  • SpringMVC+MyBatis 开发社交网站-26_实现图书分页查询
    实现图书分页查询imooc-reader项目:webapp\WEB-INF\ftl\management\book.ftl 图书管理页面<scriptsrc="/resources/layui/layui.all.js"></script><script>   vartable=layui.table;//table数据表格对象   var$=layui.$;//jQuery   varedit......
  • SpringMVC+MyBatis 开发社交网站-25_实现图书新增功能
    实现图书新增功能imooc-reader项目:pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/mav......
  • 【Spring】SpringMVC基本概念
    1、介绍1.1简介SpringMVC是SpringFramework中的一个模块,它基于Java实现了WebMVC设计模式,用于构建Web应用程序。SpringMVC提供了清晰的职责划分,使得开发者能够更加简洁和直观地开发Web层。1.2优点松耦合:基于Spring框架的依赖注入(DI)和面向切面编程(AOP)等特性......
  • 基于Springboot的在线英语阅读分级平台(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的在线英语阅读分级平台(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web......
  • 基于Springboot的国产动漫网站(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的国产动漫网站(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。界......
  • 基于SpringBoot+Vue的电商应用系统的设计与实现
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达......
  • 基于spring boot的多维分类的知识管理系统的设计与实现
    摘 要随着国内市场经济这几十年来的蓬勃发展,突然遇到了从国外传入国内的互联网技术,互联网产业从开始的群众不信任,到现在的离不开,中间经历了很多挫折。本次开发的多维分类的知识管理系统有管理员和用户两个角色。管理员可以管理用户信息,知识分类,知识信息等,用户可以查看和下载......
  • 基于springboot+vue的原创歌曲分享平台
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示系统首页用户注册音乐分享个人中心后台登录管理员功能界面用户管理音乐分类管理音乐分享管......
  • Spring6 对 集成MyBatis 开发运用(附有详细的操作步骤)
    1.Spring6对集成MyBatis开发运用(附有详细的操作步骤)@目录1.Spring6对集成MyBatis开发运用(附有详细的操作步骤)每博一文案2.大概的实现步骤概述3.详细实现操作步骤4.Spring配置文件的import,导入外部xml配置5.总结:6.最后:每博一文案理想主义的花终将盛开在浪......