传统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>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值