传统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的主要内容,如果未能解决你的问题,请参考以下文章

传统spring aop

spring面试题

框架 day37 Spring3,AOP,代理模式(动态/CGLIB/工厂bean),传统AOP,AspectJ框架(基于xml/注解),切入点表达式,jdbcTemplate

Spring--AOP 例子

spring的ioc和aop都是啥??

java编程,spring里ioc和aop用啥原理实现的