Spring——AOP(Aspect Oriented Programming)

什么是AOP(Aspect Oriented Programming)

AOP(Aspect Orient Programming)是面向切面编程,作为面向对象编程的一种补充,已经成为一种比较成熟的编程方式。面向切面编程将程序运行过程分解成各个切面;AOP专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在JavaEE应用中,常常通过AOP来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等
AOP的核心思想是:将很多业务都要使用的功能进行抽取,在运行业务时; 再动态的植入这些抽取的代码。(将共性业务和核心业务分离).AOP实现了共性功能和核心功能的解耦;提高了共性功能的代码的复用率
AOP和OOP互为补充,面向切面编程将程序运行过程分解成各个切面
值得注意的是:AOP是一种设计思想,与具体的技术无关。

AOP基础概念

        a、切面(Aspect):是一个类,是对横切关注点的抽象;切面用于组织多个Advice,Advice放在切面中定义。
		
		b、连接点(JoinPoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出。在Spring AOP中,连接点总是方法的调用。
							  
		c、切入点(Pointcut):匹配连接点的拦截规则。AOP的核心;可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。
		
		d、通知(Advice):在切面上拦截到某个特定的连接点之后执行的动作
		
		e、目标对象(Target Objcet):被一个或多个切面所通知的对象,即业务中需要进行增强的业务对象
		
		f、织入(Weaving):将切面作用到目标对象上,然后产生一个代理对象的过程
		
		g、引入(Introduction):用来在运行时给一个类声明额外的方法或属性,即不需要为类实现一个接口 就能使用接口中的方法。

Spring实现AOP

导入所需的jar包:

<!--spring AOP的包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${springVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${springVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>

基于CGLIB动态代理实现的AOP

在这里;创建Dog、Fish实例;他们都有同一个放法eatFood();在这里以时间为切入点做示例

package com.aop;

/**
 * @author Una
 * @date 2022/8/11 17:34
 * @description:
 */


public class Fish {
   
    public void eatFood(){
   
        System.out.println("开始吃鱼食!!!");
        try {
   
            Thread.sleep(1000);
        } catch (InterruptedException e) {
   
            e.printStackTrace();
        }
        System.out.println("吃完了鱼食!!!");
    }
}
package com.aop;

/**
 * @author Una
 * @date 2022/8/11 17:37
 * @description:
 */


public class D
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值