传统spring aop

  • Post author:
  • Post category:其他





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>











版权声明:本文为u012881836原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。