AOP核心概念

本文深入探讨了面向切面编程(AOP)的核心概念,包括通知(Advice)、连接点(Joinpoint)、切入点(Pointcut)、切面(Aspect)、织入(Weaving)等,通过示例代码展示了如何在业务逻辑中应用切面,提高代码复用性和模块化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AOP的核心概念

概念描述
Advice,通知需要单独封装的功能,定义在类的方法中
Joinpoint,连接点可以使用通知的地方
Pointcut,切入点定义使用通知的连接点集合
Aspect,切面通知和切入点的组合
Weaving,织入把切面应用到应用程序中的过程
Target,目标应用切面的对象
Introduction,引入向现有的类添加新方法或新属性

通知

看下面伪代码:

Service-1:
public class UserService{
	public void reg(){
		logger.log();
		doReg();
	}
	public void login(){
		logger.log();
		doLogin();
	}
}
Service-2:
public class OrderService{
	public void add(){
		logger.log();
		doAdd();
	}
}

对于上面两个类,它们的方法都有一个记日志的功能。从面向切面编程的角度来说,它就是一个通知,那么这个记日志的代码就不能让其分散在每一个业务逻辑方法里。可以像下面这样实现:

public class LogAdvice{
	public void log(){
			...
	}
}
Service-1:
public class UserService{
	public void reg(){
		//logger.log();
		doReg();
	}
	public void login(){
		//logger.log();
		doLogin();
	}
}
Service-2:
public class OrderService{
	public void add(){
		//logger.log();
		doAdd();
	}
}

连接点

在上面的例子里面,可以使用通知的地方在方法里面。SpringAOP本身只支持在一个public的非静态的方法上面来应用通知;对于AspectJ来说,应用通知的地方就更多。

切入点

上面说连接点时,是进入方法时候可以使用通知。但是,方法有很多,到底哪些方法可以来执行通知,就需要通过切入点来定义。因此,切入点在开发里面会经常使用,它可以非常明确的定义哪些包下面的哪些类的哪些方法可以应用通知。

切面

是一个组合起来的概念,它会定义通知和切入点。因为通知是定义了需要加入到业务逻辑里面的功能,而切入点定义了这些通知到底用在哪些地方。将它们组合起来,在运行时就可以非常明确的知道切面的具体执行时机。
比如上面示例代码,我想定义的切入点是所有以“Service”结尾的类里面以“add”开头的方法。这样的话,就只会在OrderService类里的add()方法中应用,其他不满足要求的就不会应用到切面里面定义的功能。
切面是在使用Spring过程中,需要着重进行配置的。

织入

比较简单,就是一个动词,把切面应用到应用程序的过程。

目标

上面的示例伪代码中,Service的实例就是目标。

引入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值