AOP笔记

3.2
  AOP的应用场景:
    场景一: 记录日志 
    场景二: 监控方法运行时间 (监控性能)
    场景三: 权限控制 
    场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
    场景五: 事务管理 (调用方法前开启事务, 调用方法后提交或者回滚、关闭事务 )

Aop相关术语:
      Aspect(切面): 就是一个java类,里面写的是   在执行的时候可增强的方法。
      joinpoint(连接点):是一些要进行增强的方法
      Pointcut(切入点):在什么时候加增强方法   在执行之前还是之后。    拦截那些bean的方法
      advice(通知): 指的是拦截到 切入点  之后要做的事情  就是通知    
      通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
    

添加注解对象bean扫描
<!-- 1: aop配置切面类 -->
    <bean id = "log"   class="com.igeek.aop.aspect.Log"></bean>
    <bean id = "transaction" class="com.igeek.aop.aspect.Tramsaction"></bean>

<!-- 2: aop配置切面(包括切入点),让切入点关联通知 -->(那些点加入功能)
    <aop:config>
        <!-- 3:pointcut切入点:  拦截那些bean的方法
            execution(*包.类.方法(..))
                任意返回值        任意参数类型  -->
    <aop:pointcut id="pcut" expression="execution(*com.igeek.aop.service.impl.ItemServiceImpl.*。*(..))"></aop:pointcut>
<!-- 4:配置通知   -->  把配置的功能 关联到切入点
    <aop:aspect ref="log">
        <!--  
?        Before 前置通知,相当于BeforeAdvice
?        AfterReturning 后置通知,相当于AfterReturningAdvice   
?        AfterThrowing抛出通知,相当于ThrowAdvice

?        After 最终final通知,不管是否异常,该通知都会执行    
        -->
        <aop:after-returning method="log" pointcut-ref="pcut"/>
    </aop:aspect>
 </beans>    </aop:config>

------------aop   XML格式
<context:component-scan base-package="com.igeek.aop"></context:component-scan>
<bean id = "log"   class="com.igeek.aop.aspect.Log"></bean>
<aop:config>
    <!-- 切入点-->
    <aop:pointcut id="tcut " expression=" execution(*包.类.方法(..))"></aop:pointcut>    
    <!-- 配置通知-->                                        execution(* com.igeek.aop.service.impl.*.add*(..))"></aop:pointcut>
    <aop:aspect ref="transaction">
        <aop:before method=" "   pointcut-ref="tcut"/>
        <aop:after-returning method=" "   pointcut-ref="tcut"/>
        <aop:after-throwing method=" "   throwing= " "  pointcut-ref="tcut"/>
    </aop:aspect>
</aop:config>

--------------aop  注解配置格式
  在切面类内部配置:
    首先XML文件配置  <!-- 注解对象bean扫描 -->
    <context:component-scan base-package="com.igeek.aop"></context:component-scan>
    
    <!--  在spring容器中开启AspectJ 注解自动代理机制 
            使用<aop:aspectj-autoproxy/> -->
    <aop:aspectj-autoproxy/>
     A:    1、设置切面标识
    @Component
    @Aspect

    2、添加切入点
    @Pointcut( "execution(* com.igeek.aop.service.impl.*.*(..))")
    public void pcut() { }    //定义普通方法 - 配置切入点

    3、把增强方法关联到切入点
    @AfterReturning(pointcut="pcut()")       //pointcut=方法名()

B    :每个增强方法前都直接加直接
    @Before("execution(* com.igeek.aop.service.impl.*.deleteItem*(..)) or\r\n" + 
     " execution(* com.igeek.aop.service.impl.*.save*(..)) or\r\n" + 
     " execution(* com.igeek.aop.service.impl.*.insert*(..)) or\r\n" + 
     " execution(* com.igeek.aop.service.impl.*.update*(..)) or\r\n" + 
     " execution(* com.igeek.aop.service.impl.*.modify*(..)) or\r\n" + 
     " execution(* com.igeek.aop.service.impl.*.add*(..))")  

A方法比B方法的好处在于  提高代码的复用性  更清晰些
 

标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
好的,关于Spring AOP笔记和源码讲解,我可以给你简单介绍一下。 Spring AOP是Spring框架中的一个重要模块,提供了基于代理的AOP实现。AOP(Aspect Oriented Programming)面向切面编程,是一种编程思想,它通过将横切关注点与业务逻辑分离,使得系统的关注点更加清晰,代码更加简洁易懂,同时也提高了代码的可维护性和可扩展性。 在Spring AOP中,切面(Aspect)是一个类,它包含了通知(Advice)和切点(Pointcut)。通知是在切点上执行的操作,例如在方法执行前或执行后执行一些额外的逻辑。而切点则是一个表达式,用于匹配目标对象中的方法,从而确定哪些方法会被通知所影响。 Spring AOP提供了四种通知类型,分别是: 1. 前置通知(Before advice):在目标方法执行之前执行。 2. 后置通知(After returning advice):在目标方法执行之后执行,在目标方法没有抛出异常的情况下。 3. 异常通知(After throwing advice):在目标方法抛出异常后执行。 4. 最终通知(After advice):无论目标方法是否抛出异常,最终通知都会执行。 除了通知之外,Spring AOP还提供了环绕通知(Around advice),它可以在目标方法执行前和执行后执行一些额外的逻辑,并且可以控制目标方法的执行。 在Spring AOP中,代理是通过JDK动态代理或者CGLIB字节码生成技术生成的。如果目标对象实现了接口,则使用JDK动态代理实现代理;如果目标对象没有实现接口,则使用CGLIB字节码生成技术实现代理。 在Spring AOP中,通知和切点都可以使用注解的方式来声明。例如,使用@Aspect注解声明一个切面类,使用@Before、@After、@AfterReturning、@AfterThrowing和@Around注解声明通知方法,使用@Pointcut注解声明切点表达式。 关于Spring AOP源码讲解,它的实现主要涉及到以下几个类: 1. AdvisedSupport类:封装了目标对象、切面和通知等信息。 2. ProxyFactory类:用于生成代理对象的工厂类。 3. AopProxy接口:代理对象的接口。 4. JdkDynamicAopProxy和CglibAopProxy类:实现了AopProxy接口,分别用于基于JDK动态代理和CGLIB字节码生成技术的代理对象。 以上是Spring AOP笔记和简单源码讲解,希望能对你有所帮助。如果有什么不清楚的地方,可以继续问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值