spring(14)------xml配置AOP实现

已添加用户之前需校验用户信息为例,实例前准备,在spring项目中需加入:

lib\aspectj文件下的aspectjrt.jar,aspectjweaver.jar

lib\cglib文件下的cglib-nodep-2.1_3.jar

这三个包是需要加入的。以下为通过xml形式实现aop的技术简单实例

1.添加用户的接口

package com.lanhuigu.spring.impl;

public interface IUser {
	public void add();
}

2.添加用户的实现类

package com.lanhuigu.spring.impl;

public class UserImpl implements IUser{

	@Override
	public void add() {
		// TODO Auto-generated method stub
		System.out.println("添加用户");
	}

}

3,切面类

package com.lanhuigu.spring.impl;

public class Check {
	public void checkVal(){
		System.out.println("添加用户之前要进行校验......");
	}
}

4.spring的AOP配置

<?xml version="1.0" encoding="UTF-8"?>

<!--
  - Application context definition for JPetStore's business layer.
  - Contains bean references to the transaction manager and to the DAOs in
  - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
  -->
<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"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	
	<!-- XML形式实现AOP -->
	<!-- 配置服务对象 -->
	<bean id="u" class="com.lanhuigu.spring.impl.UserImpl"/>
	<!-- 配置切面类 -->
	<bean id="check" class="com.lanhuigu.spring.impl.Check"/>
	<!-- aop的xml配置 -->
	<aop:config>
		<!-- 寻找配置切入位置 -->
		<aop:pointcut id="MyAopPointcut" expression="execution(public * com.lanhuigu.spring.impl.UserImpl.add())" />
		<!-- 配置aop的切面类 -->
		<aop:aspect ref="check">
			<!-- 通知类型 -->
			<aop:before pointcut-ref="MyAopPointcut" method="checkVal"/>
		</aop:aspect>
	</aop:config>	
</beans>

5.测试程序

package com.lanhuigu.spring.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lanhuigu.spring.impl.IUser;

public class TestXML {
	@Test
	public void testXml(){
		ApplicationContext actx =
				new ClassPathXmlApplicationContext("/applicationContext.xml");
		IUser user = (IUser) actx.getBean("u");
		user.add();
	}
}
运行结果:

添加用户之前要进行校验......
添加用户

总结:

(1)关于spring配置aop部分的解析

准备条件:id="check"切面类(Advice)

在<aop:config>配置中,通过aop:pointcut的expression来指定在哪个类中的哪个位置为切入位置,通过id="MyAopPointcut"去需找切面类,

而通过aop:aspect ref="check"配置切面类,<aop:before pointcut-ref="MyAopPointcut" method="checkVal"/>指定通知类型,在MyAopPointcut

配置的切入位置之前需要执行切面类的checkVal()方法。

(2)不要忘记导入开头说明的jar包,靠jar根据配置解析通知类型,切入位置等等。

你可能感兴趣的:(面向切面编程,execution,切入位置配置,xml配置AOP,切面类配置)