Spring——AOP核心思想与实现

AOP(Aspect Oriented Programming):面向切面编程
核心思想:动态的添加和删除切面上的逻辑而不影响原来的执行代码

AOP相关概念:

1.JoinPoint
连接点,加入切面逻辑的位置。

@Before("execution(* com.spring.service..*.*(..))")

2.PointCut
JoinPoint的一个集合

@Pointcut("execution(* com.spring.service..*.*(..))")
    public void myMethod(){};

    @Before("myMethod()")
    public void before(){
        System.out.println("before");
    }

3.Aspect
指切面类,@Aspect

4.Advice
切面点上的业务逻辑
@Before;@AfterReturning;@Around ;…

5.Target
被代理对象

6.Weave
织入。将切面逻辑添加到原来执行代码上的过程。

AOP概念图

这里写图片描述

Spring中AOP的实现

1.Annotation

<!-- 找到被注解的切面类,进行切面配置 aop Annotation方法-->
<aop:aspectj-autoproxy/>  
@Aspect
@Component
public class LogInterceptor {

    @Pointcut("execution(* com.spring.service..*.*(..))")
    public void myMethod(){};

    @Before("myMethod()")
    public void before(){
        System.out.println("before");
    }

    @Around("execution(* com.spring.dao.impl..*.*(..))")
    public void aroundProcess(ProceedingJoinPoint pjp) throws Throwable{
        System.out.println("around before");
        pjp.proceed();
        System.out.println("around after");
    }

}

2.xml

<!-- aop xml方法 -->
    <bean id="logInterceptor" class="com.spring.aop.LogInterceptor"/>
    <aop:config>
        <aop:pointcut id="logPointcut"
        expression="execution(* com.spring.service..*.*(..))"/>

        <aop:aspect id="logAspect" ref="logInterceptor">
            <aop:before method="before" pointcut-ref="logPointcut"/>
        </aop:aspect>

    </aop:config>
AOP原理解析

Spring AOP主要通过动态代理实现。Struts2中的interceptor就是AOP的一种实现。

动态代理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值