SpringAOP案例(一)XML方式
2014-03-07 10:46
387 查看
第一步要导入spring架构包:一、XML方式1. TestAspect:切面类[java] viewplaincopypackage com.spring.aop;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;public class TestAspect {public void doAfter(JoinPoint jp) {System.out.println("log Ending method: " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName());}public Object doAround(ProceedingJoinPoint pjp) throws Throwable {long time = System.currentTimeMillis();Object retVal = pjp.proceed();time = System.currentTimeMillis() - time;System.out.println("process time: " + time + " ms");return retVal;}public void doBefore(JoinPoint jp) {System.out.println("log Begining method: " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName());}public void doThrowing(JoinPoint jp, Throwable ex) {System.out.println("method " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName() + " throw exception");System.out.println(ex.getMessage());}}2. AServiceImpl:目标对象[java] viewplaincopypackage com.spring.service;// 使用jdk动态代理public class AServiceImpl implements AService {public void barA() {System.out.println("AServiceImpl.barA()");}public void fooA(String _msg) {System.out.println("AServiceImpl.fooA(msg:" + _msg + ")");}}3. BServiceImpl:目标对象[java] viewplaincopypackage com.spring.service;// 使用cglibpublic class BServiceImpl {public void barB(String _msg, int _type) {System.out.println("BServiceImpl.barB(msg:" + _msg + " type:" + _type + ")");if (_type == 1)throw new IllegalArgumentException("测试异常");}public void fooB() {System.out.println("BServiceImpl.fooB()");}}ApplicationContext:Spring配置文件 文件默认在src目录下[html] viewplaincopy<?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"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><aop:config><aop:aspect id="TestAspect" ref="aspectBean"><!--配置com.spring.service包下所有类或接口的所有方法--><aop:pointcut id="businessService" expression="execution(* com.spring.service.*.*(..))" /><aop:before pointcut-ref="businessService" method="doBefore"/><aop:after pointcut-ref="businessService" method="doAfter"/><aop:around pointcut-ref="businessService" method="doAround"/><aop:after-throwing pointcut-ref="businessService" method="doThrowing" throwing="ex"/></aop:aspect></aop:config><bean id="aspectBean" class="com.spring.aop.TestAspect" /><bean id="aService" class="com.spring.service.AServiceImpl"></bean><bean id="bService" class="com.spring.service.BServiceImpl"></bean></beans>
package com.spring.main;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.service.AService;//测试类public class SpringAOPTest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");//对于实现接口的类,要得到它的接口的bean而不是接口的实现类AService aServiceImpl = (AService) ctx.getBean("aService");aServiceImpl.barA();aServiceImpl.fooA("这是springaop测试类!");// AService b=(AService) ctx.getBean("bService");// b.barA();// b.fooA("这是没有实现接口的类!");}}
相关文章推荐
- SpringAOP案例(一)XML方式
- spring aop xml方式的配置案例 以及 annotation方式的配置aop
- xml方式---spring的AOP拦截用户操作
- Spring之AOP XML方式
- Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式
- Spring中的AOP(七)——基于XML配置文件方式的AOP
- Spring之AOP声明式事务管理(采用xml的配置方式更好)
- spring aop相关概念和xml与注解实现方式
- Spring 基于xml配置方式的AOP
- Intellij IDEA创建Spring项目之基于Aspectj的AOP操作(XML配置方式)
- Spring之AOP XML方式
- 17、(知识篇)Spring使用AOP(XML方式)
- Spring 动态代理分析&AOP的XML的方式&注解方式
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
- aop(使用xml方式)(spring团队建议我们使用注解的方式)
- spring 学习笔记 使用pojo+xml的方式开发aop
- Spring中的AOP注解方式和XML方式
- spring框架的学习(四)——Spring的AOP的概述及AOP的操作(基于aspectj的xml方式)
- Spring之AOP XML方式
- spring AOP (使用AspectJ的xml方式 的aop实现) (7)