AOP配置方式

本文介绍了 Spring AOP 的三种实现方式:基于 XML 配置的切入点和通知、基于 XML 配置的 AOP 代理及基于注解的 AOP 配置。通过示例详细展示了如何使用这些方式来实现面向切面编程。

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

一:基于XML配置
<!--目标对象 -->
<bean id="AOPservice" class="com.study.spring.service.impl.AOPServiceImpl"/>
<!-- advice通知 -->
<bean id="adviceMessage" class="com.study.spring.aop.advice.Advicer"/>
<bean id="perfAdvice" class="com.study.spring.aop.advice.PerfAdvicer"/>
<!-- 切入点adviser -->
<bean id="adviser" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="adviceMessage"/>
<property name="pattern" value="com.study.spring.service.impl.AOPServiceImpl.print"></property>
</bean>
<bean id="perfAdviser" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="perfAdvice"/>
<property name="pattern" value="com.study.spring.service.impl.AOPServiceImpl.*(..)"></property>
</bean>
<!-- 代理对象 返回实例是目标对象 target属性指定的AOPservice对象-->
<bean id="proxyService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="AOPservice"/>
</property>
<!--源码内固定的属性private String[] interceptorNames; -->
<property name="interceptorNames">
<list>
<value>adviser</value>
<value>perfAdviser</value>
</list>
</property>
</bean>
二:基于XML配置
<bean id="perfAdviser" class="com.study.spring.aop.advice.PerfAdvicer2" />
<aop:config proxy-target-class="true">
<aop:aspect ref="perfAdviser">
<aop:pointcut id="methodPoint" expression="execution(* com.study.spring.service.impl.AOPServiceImpl.*(..)) "/>
<!--在该切入点使用自定义拦截器-->
<aop:before pointcut-ref="methodPoint" method="before"/>
<aop:around pointcut-ref="methodPoint" method="around"/>
<aop:after pointcut-ref="methodPoint" method="after"/>
<aop:after-returning pointcut-ref="methodPoint" method="afterRet"/>
<aop:after-throwing pointcut-ref="methodPoint" method="afterError"/>
</aop:aspect>
</aop:config>
三:基于注解配置
<bean id="AOPservice" class="com.study.spring.service.impl.AOPServiceImpl"/>
<bean id="perfAdvice" class="com.study.spring.aop.advice.PerfAdvicer3"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>

Spring AOP有两种配置方式:注解配置和XML配置。 1. 注解配置AOP:使用注解配置AOP可以让我们更加方便地对切面进行定义。通过在Java类上使用注解可以声明一个切面,也可以声明通知类型(@Before、@After等)以及切点等内容。同时,也可以使用@AspectJ注解来实现更加复杂的切面和通知。例如: ``` @Aspect public class MyAspect { @Before("execution(* com.example.service.*.*(..))") public void before() { System.out.println("Before Advice..."); } @AfterReturning("execution(* com.example.service.*.*(..))") public void afterReturning() { System.out.println("After Returning Advice..."); } @AfterThrowing("execution(* com.example.service.*.*(..))") public void afterThrowing() { System.out.println("After Throwing Advice..."); } @Around("execution(* com.example.service.*.*(..))") public void around(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("Around Before Advice..."); joinPoint.proceed(); System.out.println("Around After Advice..."); } } ``` 2. XML配置AOP:XML配置AOP需要在XML配置文件中定义切面和通知,同时需要指定切点和切面的关联关系。例如: ``` <bean id="myAspect" class="com.example.MyAspect"/> <aop:config> <aop:aspect ref="myAspect"> <aop:before pointcut="execution(* com.example.service.*.*(..))" method="before"/> <aop:after-returning pointcut="execution(* com.example.service.*.*(..))" method="afterReturning"/> <aop:after-throwing pointcut="execution(* com.example.service.*.*(..))" method="afterThrowing"/> <aop:around pointcut="execution(* com.example.service.*.*(..))" method="around"/> </aop:aspect> </aop:config> ``` --相关问题--:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值