spring Aop中aop:advisor 与 aop:aspect的区别

2023年06月24日20:18:07 热门 1402

在spring的配置中,会用到这两个标签.那么他们的区别是什么呢?

    <bean id="testAdvice" class="com.myspring.app.aop.MyAdvice"/> //切面代码

使用<aop:aspect>配置时,

如果切面代码是自动注入的bean,那么<aop:aspect>的ref属性直接写bean的注入名字就可以了!

    <aop:config>
        <aop:aspect ref="testAdvice" id="testAspect">
            <aop:pointcut expression="(execution(* com.myspring.app.aop.TestPoint.*(..)))" id="testPointcut"/>
            <aop:before  method="doBefore" pointcut-ref="testPointcut"/>
        </aop:aspect>
    </aop:config>

    <aop:config>
        <aop:pointcut expression="(execution(* com.myspring.app.aop.TestPoint.*(..)))"  id="mypoint"/>
        <aop:advisor advice-ref="testAdvice" pointcut-ref="mypoint"/>
    </aop:config>

注意:2种格式的书写次序.

package com.myspring.app.aop;

import java.lang.reflect.Method;

import org.aspectj.lang.JoinPoint;
import org.springframework.aop.MethodBeforeAdvice;

/**
 * 方法前置通知
 * @author Michael
 *
 */
@Component("myAdvice")//如果是自动装配,在定义切面的时候直接写在ref属性里就可以了
public class MyAdvice implements MethodBeforeAdvice{
    //如果使用aop:advisor配置,那么切面逻辑必须要实现advice接口才行!否则会失败!
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("前置通知");
    }

    //如果是<aop:aspect>配置,编写一般的方法就可以了,然后在切面配置中指定具体的方法名称!
    public void doBefore(JoinPoint point) throws Throwable {

    }
}

spring Aop中aop:advisor 与 aop:aspect的区别 - 天天要闻

热门分类资讯推荐

曾小贤的上司Lisa榕,现实中不仅才貌双全,还嫁给了CEO - 天天要闻

曾小贤的上司Lisa榕,现实中不仅才貌双全,还嫁给了CEO

曾小贤的上司Lisa榕,现实中不仅才貌双全,还嫁给了CEO虽然说《爱情公寓》这部剧在剧情上充满了争议,但是一定程度上,这部剧也是很多人的回忆,是伴随了一代人的青春回忆,而且剧中的很多角色都成为了经典,他们的口头禅也一直被拿来玩儿梗。
Lisa榕做主持多年没红,被陈赫拉进爱情公寓爆红,如今怎样了 - 天天要闻

Lisa榕做主持多年没红,被陈赫拉进爱情公寓爆红,如今怎样了

谈到《爱情公寓》这部火爆一时的欢乐喜剧,大家肯定都不陌生。不知道大家是否还记得《爱情公寓》中那个把曾小贤治得服服帖帖的女上司Lisa榕,现实中的她名叫榕榕,和剧中的形象也判若两人。1981年出生在辽宁沈阳的榕榕,毕业于上海戏剧学院,后来成为了上海东方传媒集团有限公司的一名主持人。