Spring 学习——Spring AOP——AOP配置篇Aspect、Pointcut

Schena——based AOP

  • 声明
    • Spring所有的切面和通知器都必须放在一个<aop:config>标签内,可以同时配置多个<aop:config>元素。
    • 每一个<aop:config>内可以包含pointcut、advisor、aspect元素,但是必须按照这3个元素指定顺序进行声明。

声明切面Aspect

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd" >

        <bean id="ikAspect" class="com.jing.spring.aop.IKAspect"></bean>
        <bean id="ikAspectBiz" class="com.jing.spring.aop.IKAspectBiz"></bean>

        <aop:config>
                <aop:aspect id="ikAspectAop" ref="ikAspect"></aop:aspect>
        </aop:config>
</beans>
复制代码
  • Next

声明通知Pointcut

  • 使用形式
    • com.jing.spring.service.AccountService.setAbnormal()。切入点为具体某一个方法。:Aspect和Spring Aop 都支持
    • execution(public * *(..)) :切入点为执行所有public方法。:Aspect和Spring Aop 都支持
    • execution(* set*(..)):切入点为执行所有set方法。:Aspect和Spring Aop 都支持
    • execution(* com.jing.spring.service.AccountService.*(..)):切入点为执行AccountService类中所有方法时。:Aspect和Spring Aop 都支持
    • execution(* com.jing.spring.service..(..)):切入点为执行com.jing.spring.service包下所有方法时。:Aspect和Spring Aop 都支持
    • execution(* com.jing.spring.service...(..)):切入点为执行com.jing.spring.service包及其子包下的所有方法时。:Aspect和Spring Aop 都支持
    • within:用于匹配指定类型内的方法。:only used by Spring AOP
      • with(com.jing.spring.service.*)
      • with(com.jing.spring.service..*)
    • target:匹配当前目标对象类型的执行方法。:only used by Spring AOP
    • args:匹配参数。:only used by Spring AOP
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd" >

        <bean id="ikAspect" class="com.jing.spring.aop.IKAspect"></bean>
        <bean id="ikAspectBiz" class="com.jing.spring.aop.IKAspectBiz"></bean>

        <aop:config>
                <aop:aspect id="ikAspectAop" ref="ikAspect">
                        <aop:pointcut id="ikPoint" expression="execution(* com.jing.spring.aop.IKAspectBiz.*(..))"></aop:pointcut>
                </aop:aspect>
        </aop:config>
</beans>
复制代码
  • Next
posted @   话·醉月  阅读(1582)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示