spring08_aop_aop使用细节

本文详细介绍了Spring AOP中的AspectJ集成,包括execution匹配方法执行的连接点,aop:config标签的配置,如proxy-target-class属性和expose-proxy属性的用法。还讲解了aop:aspect标签、aop:pointcut标签的作用和属性,并讨论了如何配置Spring AOP使用Cglib代理模式的两种方法。最后提到了五种通知类型的相关内容,虽然未深入展开,但提供了整体理解。

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

1.AspectJ(spring集成)

execution 用于匹配方法执行的连接点

	    全限定方法名
                  访问修饰符  返回值  包名.包名.包名.类名.方法名(参数列表)
		全匹配方式:
        		public void com.jinkai.service.impl.AccountServiceImpl.saveAccount()
		访问修饰符可以省略
				void com.jinkai.service.impl.AccountServiceImpl.saveAccount()
		返回值可以使用*,表示任意返回值
				* com.jinkai.service.impl.AccountServiceImpl.saveAccount()
		包名可以使用".."表示当前包及其子包
				* com.jinkai.service..AccountServiceImpl.saveAccount()
         类名和方法名,都可以使用*,表示任意类,任意方法
				* com.jinkai.service.impl.*.*()
        参数列表,可以使用具体类型
				基本类型直接写类型名称 : int
				引用类型必须写全限定类名:java.lang.String
		参数列表可以使用*,表示任意参数类型,但是必须有参数
				* com.jinkai.service.impl.AccountServiceImpl.saveAccount(*)
        参数列表可以使用..,表示有无参数均可。有参数可以是任意类型
				* com.jinkai.service.impl.AccountServiceImpl.saveAccount(..)
        全通配方式:
				* *..*.*(..)
        开发中常用写法:
				* com.jinkai.service..*.*(..)

2.aop:config标签

作用: 用于表示开始aop的配置
出现位置:写在beans标签的内部
属性:proxy-target-class:用于指定代理方式。默认值是false。当取值为true时,采用cglib的代理方式。

expose-proxy:用于指定是否暴露代理对象,通过AopContext可以进行访问代理对象。

3.aop:aspect标签

作用:用于配置切面。
出现位置:aop:config标签内部。
属性:
id:用于指定切面的唯一标识。
ref:用于指定引用bean的id。
order:用于指定多个切面中,相同通知类型的执行顺序。取值是个整数,数值越小优先级越高

4.aop:pointcut标签

作用:用于配置通用切入点表达式
出现位置:
aop:config标签内部,当出现在此处时,要求必须在所有aop:aspect标签之前。它可以供所有切面使用
aop:aspect标签内部,当出现在此处时,它没有顺序要求,但只能供当前切面使用。

5.配置SpringAOP使用Cglib代理模式

第一种

第二种

6.五种通知类型(细节以后再弄)

    <!--配置service-->
    <bean id="accountService" class="com.jinkai.service.impl.AccountServiceImpl"></bean>
    <!--把通知bean交给spring来管理-->
    <bean id="logUtil" class="com.jinkai.utils.LogUtil"></bean>
    <!--开始aop的配置-->
    <aop:config>
        <!--配置通用的切入点表达式-->
        <aop:pointcut id="pt1" expression="execution(* com.jinkai.service.impl.*.*(..))"></aop:pointcut>
        <!--配置切面-->
        <aop:aspect id="logAdvice" ref="logUtil">
            <!--配置前置通知-->
            <aop:before method="beforePrintLog" pointcut-ref="pt1"/>
            <!--配置后置通知-->
            <aop:after-returning method="afterReturningPrintLog" pointcut-ref="pt1" returning="rtValue" />
            <!--配置异常通知-->
            <aop:after-throwing method="afterThrowingPrintLog" pointcut-ref="pt1" throwing="e" />
            <!--配置最终通知-->
            <aop:after method="afterPrintLog" pointcut-ref="pt1"/>
        </aop:aspect>
    </aop:config>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值