【Spring】核心部分之AOP:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心AOP,AOP有这一篇足以
创始人
2024-04-29 21:37:17
0

AOP

  • 基本概念
  • 基本原理
  • 专业术语
  • 案例演示
    • 基于注解(重点)
    • 基于配置文件

基本概念

面向切面编程,也叫面向方面编程,利用aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间降低耦合,提高程序的可重用性,同时提高了开发效率。

基本原理

用到了代理模式,有关代理模式见文章:设计模式——代理模式详解(Java版)

专业术语

连接点:可以被增强的方法
切入点:实际被增强的方法
通知(增强):实际增强的部分
通知有多种类型
前置通知
后置通知
环绕通知
异常通知
最终通知
切面:是一个动作,将通知应用到切入点的过程

案例演示

基于注解(重点)

1.需要增强的方法

public class User {public void Add(){System.out.println("add............");}
}

2,编写增强类

public class UserProxy {//前置通知public void before(){System.out.println("before...........");}
}

3.进行通知的配置

第一步:在spring的配置文件中开启注解扫描

xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

第二步:使用注解创建两个类的对象

@Component
public class User {public void Add(){System.out.println("add............");}
}
@Component
public class UserProxy {//前置通知public void before(){System.out.println("before...........");}
}

第三步:在增强的类上面加注解Aspect

@Aspect //生成代理对象
@Component
public class UserProxy {//前置通知public void before(){System.out.println("before...........");}
}

第四步:在spring的配置文件中开启Aspect生成代理对象

 xmlns:aop="http://www.springframework.org/schema/aop"http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

4.配置不同类型的通知

@Component
@Aspect //生成代理对象
public class UserProxy {//前置通知@Before(value = "execution(* com.li.spring.User.Add(..))")public void before(){System.out.println("before...........");}//后置通知@After(value = "execution(* com.li.spring.User.Add(..))")public void after(){System.out.println("after...........");}@AfterReturning(value = "execution(* com.li.spring.User.Add(..))")public void AfterReturning(){System.out.println("AfterReturning...........");}@AfterThrowing(value = "execution(* com.li.spring.User.Add(..))")public void AfterThrowing(){System.out.println("AfterThrowing...........");}//环绕通知@Around(value = "execution(* com.li.spring.User.Add(..))")public void Around(ProceedingJoinPoint proceedingJoinPoint){System.out.println("环绕之前...........");try {Object proceed = proceedingJoinPoint.proceed();} catch (Throwable e) {throw new RuntimeException(e);}System.out.println("环绕之后...........");}
}

在这里插入图片描述

基于配置文件

1.准备要增强的类及方法

public class People {public void say(){System.out.println("say................");}
}
public class PeopleProxy {public void before(){System.out.println("before.................");}
}

2.在spring的配置文件中创建两个类


3.在spring的配置文件中配置切入点


4.测试

public class test {public static void main(String[] args) {ApplicationContext context=new ClassPathXmlApplicationContext("bean4.xml");People people = context.getBean("people", People.class);people.say();}
}

在这里插入图片描述

相关内容

热门资讯

安卓凤凰系统开机很慢,安卓凤凰... 你有没有遇到过这种情况?手机刚买回来的时候,那叫一个流畅,各种应用秒开,感觉就像是开了挂一样。可是,...
安卓系统8.1.0刷机,体验流... 你有没有想过,你的安卓手机系统是不是已经过时了呢?别急,别急,今天就来给你详细聊聊安卓系统8.1.0...
上汽大众换安卓系统,开启智能出... 你有没有听说最近上汽大众的大动作?没错,他们竟然把车机系统换成了安卓系统!这可真是让人眼前一亮,让我...
如何拆分安卓系统数据,安卓系统... 你有没有想过,你的安卓手机里那些密密麻麻的数据,其实是可以被拆分的呢?没错,就是那些照片、视频、应用...
5.1安卓系统刷机,解锁新功能 你有没有想过,你的安卓手机其实就像一个等待被重新雕琢的艺术品?没错,今天就要来聊聊这个神秘又充满乐趣...
安卓系统设置替代软件,个性化设... 你有没有发现,安卓手机的设置界面有时候真的有点复杂,让人眼花缭乱?别急,今天就来给你揭秘一些替代软件...
安卓系统蓝牙在哪打开,安卓系统... 你有没有发现,有时候手机里的功能就像藏宝图一样,让人找得头都疼?今天,我就来帮你解开这个谜团,告诉你...
安卓linux系统软件,功能与... 你知道吗?在智能手机的世界里,有一个系统可是独树一帜,那就是安卓Linux系统。它就像一位多才多艺的...
安卓ios双系统接单,拓展业务... 你知道吗?现在这个时代,手机双系统已经成为了很多人的选择。安卓和iOS,这两个操作系统就像是一对双胞...
安卓系统和linux系统的区别... 你有没有想过,为什么你的手机里装的是安卓系统而不是Linux系统呢?这两者虽然听起来都挺高大上的,但...
小米4安卓系统几代,引领科技潮... 你有没有想过,你的手机里那个小小的操作系统,其实就像是一个默默无闻的超级英雄呢?今天,咱们就来聊聊小...
安卓系统里的SE,功能与操作指... 你有没有发现,安卓系统里有个叫SE的小家伙?别小看了它,这个小家伙可是隐藏着不少秘密呢!今天,就让我...
手机系统flyme是安卓系统吗... 你有没有想过,你的手机里那个飞快如风的系统,Flyme,它是不是安卓的“好兄弟”呢?今天,就让我带你...
安卓os系统怎么使用,Andr... 你手里那台安卓手机是不是总感觉有点儿复杂,不知道怎么玩转呢?别急,今天就来给你详细介绍一下安卓OS系...
安卓怎么装旧系统,安卓设备如何... 你有没有想过,手机用久了,系统更新换代,新功能层出不穷,但有时候,那些旧系统里的经典操作和熟悉感,简...
电脑怎装安卓系统,轻松实现多系... 你有没有想过,你的电脑除了装Windows系统,还能装上安卓系统呢?没错,就是那个让你手机不离手的安...
安卓系统找不到软件,探寻解决方... 最近是不是你也遇到了这样的烦恼:手机里明明有安卓系统,却怎么也找不到心仪的软件?别急,今天就来给你详...
小米独立系统取代安卓,迈向自主... 小米独立系统:小米与安卓的较量在科技领域,每一次系统的更新换代都牵动着无数科技爱好者和行业从业者的目...
安卓系统会员价格,性价比与权益... 你有没有发现,最近手机上的安卓系统会员价格又涨了?这可真是让人有点头疼呢!咱们一起来聊聊这个话题,看...
安卓点歌系统怎么点歌,享受音乐... 你有没有想过,在安卓手机上点歌竟然也能这么有趣呢?没错,现在就让我带你一起探索安卓点歌系统的奥秘吧!...