Spring(三 AOP XML实现)

加入AOP标签

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.1.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">

AOP

<aop:config>
		<!-- execution中 *代表修饰符, 后面的地址代表调用BookImpl方法就会调用通知中的方法,
            其中.*是代表BookImpl中的所有方法,(..)代表包括方法重载,即参数类型不同,id
            将会被后边的通知调用-->
		<aop:pointcut expression="execution(* com.lanou.book.dao.impl.BookImpl.*(..))" id="pc_userinfo"/>
		
		<!-- aspect  通知标签 id可以随便取,ref表示通知要调用的实例类,
            即要在已完成项目功能前后要加入调用的方法其中比如加入的是loginDao  -->
		<aop:aspect id="userinfoAspect" ref="loginDao">
			<!-- 3前置通知 
                method  表示要调用loginDao中的那个方法 pointcut-ref  pointcut中的id-->
		<aop:before method="save" pointcut-ref="pc_userinfo"/> 
			
			<!-- 4后置通知 -->
<!-- 			<aop:after method="writeLog" pointcut-ref="pc_userinfo"/> -->
			
			<!-- 5环绕通知 -->
		<!--	<aop:around method="save" pointcut-ref="pc_userinfo"/> -->
			
<!-- 			<aop:after-returning method=""/> -->
			
<!-- 			<aop:after-throwing method=""/> -->
		</aop:aspect>
	</aop:config>

@Component("bookDao")
public class BookImpl implements BookDao{

	@Override
	public void save() {
		System.out.println("我是测试滴");
		
	}

}

使用前置通知效果如下

 method表示要调用loginDao中的那个方法 

pointcut-ref  通知标签中的id

猜你喜欢

转载自blog.csdn.net/qq_42651904/article/details/82979734