传统spring aop
Posted 时间沉淀美好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传统spring aop相关的知识,希望对你有一定的参考价值。
从spring容器获得目标类,进行aop配置从而让spring创建代理类。全自动过程。即传统spring aop的实现过程
预备工作:添加aop命名空间
目标类及其接口:
public interface UserService
{
public void addUser();
public void updateUser();
}
public class UserServiceImpl implements UserService
{
@Override
public void addUser()
{
System.out.println("spring aop add user");
}
@Override
public void updateUser()
{
System.out.println("spring aop update user");
}
}
切面类:
public class MyAspect implements MethodInterceptor
{
@Override
public Object invoke(MethodInvocation mi) throws Throwable
{
System.out.println("前");
Object obj = mi.proceed();
System.out.println("后");
return obj;
}
}
本博文的重点在xml配置:
<?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: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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 1 创建目标类 -->
<bean id="userServiceId" class="com.canyugan.c_aop.UserServiceImpl"></bean>
<!-- 2创建切面类(通知) -->
<bean id="myAspectId" class="com.canyugan.c_aop.MyAspect"></bean>
<!-- 3 spring 传统aop开发,使 通知 引用到 目标类切入点上
* 添加aop命名空间
* aop 编程 <aop:config>
* <aop:pointcut> 用于声明切入点,确定目标类上的那些方法将被增强。
id : 切入点名称
expression : 用于编写切入点表达式 (aspectj 切入点表达式)
execution(* com.itheima.c_aop.*.*(..))
固定 返回值类型 包 类名 方法名 参数列表
* <aop:advisor> 特殊的切面,只有一个切入点和一个通知
advice-ref:一个通知引用
pointcut-ref:一个切入点引用
-->
<aop:config>
<aop:pointcut expression="execution(* com.canyugan.c_aop.*.*(..))" id="myPointCut"/>
<aop:advisor advice-ref="myAspectId" pointcut-ref="myPointCut"/>
</aop:config>
</beans>
以上是关于传统spring aop的主要内容,如果未能解决你的问题,请参考以下文章