Spring AOP(一、xml文件配置实现)
2014-04-25 15:49
363 查看
在Xml配置AOP有两种实现方式:一、基于代理实现AOP切面编程;二、通过自动代理实现AOP切面编程
项目结构
其中,StudentsDAOImpl.java为切面类
一、基于代理实现AOP切面编程
StudentsDAOImpl.java
二、自动代理的AOP实现
StudentsDAOProxy.java与上面一样
但是 在applicationContext.xml中稍有改动
applcationContext.xml
相比较,自动代理实现的AOP会比基于代理实现的AOP会方便很多
源码下载点击打开链接
项目结构
其中,StudentsDAOImpl.java为切面类
一、基于代理实现AOP切面编程
StudentsDAOImpl.java
package com.pro.proxy; import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; public class StudentsDAOProxy implements MethodBeforeAdvice,AfterReturningAdvice{ @Override public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { // TODO Auto-generated method stub System.out.println("执行方法之后"); } @Override public void before(Method method, Object[] args, Object target) throws Throwable { // TODO Auto-generated method stub System.out.println("执行方法之前"); } }applicationContext.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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <!-- 基于代理的AOP实现 --> <!-- 1.定义实现类bean --> <bean id="studentsDaoImpl" class="com.pro.vo.StudentsDAOImpl"></bean> <!-- 2.定义代理类 --> <bean id="studentsDaoProxy" class="com.pro.proxy.StudentsDAOProxy"></bean> <!-- 3.定义切入点 --> <bean id="studentsDaoPointCut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"> <property name="pattern" value=".*Students"/> </bean> <!-- 4.定义通知 --> <bean id="studentsDaoAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor"> <property name="advice" ref="studentsDaoProxy"/> <property name="pointcut" ref="studentsDaoPointCut"/> </bean> <!-- 5.定义代理工厂 --> <bean id="studentsDaoFactory" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="target" ref="studentsDaoImpl"></property> <property name="interceptorNames" value="studentsDaoAdvisor"></property> <property name="proxyInterfaces" value="com.pro.dao.StudentsDAO"></property> </bean> </beans>测试类test.java
package com.pro.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.pro.dao.StudentsDAO; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); StudentsDAO sDao = (StudentsDAO) ctx.getBean("studentsDaoFactory"); //获取代理工厂Bean sDao.saveStudents(); } }
二、自动代理的AOP实现
StudentsDAOProxy.java与上面一样
但是 在applicationContext.xml中稍有改动
applcationContext.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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <!-- 自动代理的AOP实现 --> <!-- 1.定义实现类bean --> <bean id="studentsDaoImpl" class="com.pro.vo.StudentsDAOImpl"></bean> <!-- 2.定义代理类 --> <bean id="studentsDaoProxy" class="com.pro.proxy.StudentsDAOProxy"></bean> <!-- 3.定义支持正则表达式的通知 --> <bean id="studentsDaoAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="advice" ref="studentsDaoProxy"/> <property name="pattern" value=".*Students"></property> </bean> <!-- 4.声明支持自动代理 --> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></bean> </beans>测试类test.java
package com.pro.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.pro.dao.StudentsDAO; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); StudentsDAO sDao = (StudentsDAO) ctx.getBean("studentsDaoImpl");//获取实现累的bean sDao.saveStudents(); } }
相比较,自动代理实现的AOP会比基于代理实现的AOP会方便很多
源码下载点击打开链接
相关文章推荐
- Spring的xml文件配置方式实现AOP
- Spring配置xml文件实现AOP
- Spring_7_使用XML文件配置的方式实现AOP
- Spring(十二)使用Spring的xml文件配置方式实现AOP
- Spring Xml文件配置实现AOP通知
- Spring(十二)使用Spring的xml文件配置方式实现AOP
- Spring的xml文件配置方式实现AOP
- Spring AOP AspectJ注解和XML配置两种实现(Maven构建)
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
- Spring源码阅读-通用配置实现AOP
- Spring-AOP 通过配置文件实现 异常抛出增强
- 【Spring aop】Spring aop的XML和注解的两种配置实现
- spring AOP实现(Annotation方式/静态文件配置方式)
- (转)使用Spring配置文件实现AOP
- 一步一步深入spring(6)--使用基于XML配置的spring实现的AOP
- Spring AOP(二、注解配置实现)
- Spring-通过xml配置文件实现切面(AOP)
- Spring实现AOP方式之二:使用注解配置 Spring AOP
- Spring学习记录(十三)---基于xml文件配置AOP
- Spring 4.0 学习日记(9) ---XML配置实现AOP切面