首先要引入aop的配置文件 :
xmlns:aop="http://www.springframework.org/schema/aop"
第一种:使用原生spring API接:
<aop:config>
<!--切入点(在那个地方执行) expression="execution(要执行的位置)"表达式-->
<aop:pointcut id="pointcut" expression="execution(* com.huang.service.UserServiceImpl.*(..))"/>
<!--执行环绕增加 (将以下的方法切入到某个位置)-->
<aop:advisor advice-ref="Log" pointcut-ref="pointcut"/>
<aop:advisor advice-ref="AfterLog" pointcut-ref="pointcut"/>
</aop:config>
第二种:自定义类
先写个类里面有方法执行前和方法执行后的方法
public class DiyClass
{
public void before(){
System.out.println("**********方法执行前***********");
}
public void after(){
System.out.println("*********方法执行后*************");
}
}
注册该类:
<bean id="diy" class="com.huang.diy.DiyClass"/>
<aop:config>
<!--切面-->
<aop:aspect ref="diy">将改方法作为切面引入
<!--切入点 UserServiceImpl.*(..):类下的所有方法,所有参数不限-->
<aop:pointcut id="point" expression="execution(* com.huang.service.UserServiceImpl.*(..))"/>
<!-- 通知 执行那个方法,在那里执行 -->
<aop:before method="before" pointcut-ref="point"/>
<aop:after method="after" pointcut-ref="point"/>
</aop:aspect>
</aop:config>
第三种注解实现:
@Aspect//标注这个类是切面
public class Diy2 {
@Before("execution(* com.huang.service.UserServiceImpl.*(..))")//该类的所有方法所有的类型
public void before(){
System.out.println("*****diy2方法执行前***********");
}
@After("execution(* com.huang.service.UserServiceImpl.*(..)))")
public void after(){
System.out.println("************diy2方法执行后**********");
}
然后在xml中注册该类和开启注解:
<bean id="diy2" class="com.huang.diy.Diy2"/>
<!--开启注解支持 -->
<aop:aspectj-autoproxy/>
本文介绍了如何在Spring框架中使用AOP(面向切面编程)实现日志记录,包括三种方法:一是通过原生Spring API配置切入点和通知;二是自定义类实现方法执行前后的方法;三是使用注解驱动的AOP实现。每种方法都详细给出了XML配置和执行逻辑,旨在帮助开发者灵活选择适合的日志记录方式。
3285

被折叠的 条评论
为什么被折叠?



