`
yjshengshe
  • 浏览: 201895 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring2.5.6-aop

 
阅读更多

 

1 包说明

//spring运行需要导入的包

spring.jar

commons-logging.jar

//依赖注入需要导入的包

  cglib.jar

  asm.jar

  //aop 需要导入的包

aspectjweaver.jar 

cglib.jar 

aop配置使用依赖注入的方式 不使用xml的方式

 

2 编写aop基本类 man

package com.aop.spring;
	
	import org.springframework.stereotype.Component;
	
	@Component("man")
	public class Man {
		
		String name = "";
		
		public Man(){};
		
		public Man(String name)
		{
			this.name = name;
		}
		
		public void add()
		{
			System.out.println("add");
		}
		
		public void add(String name)
		{
			System.out.println("add");
		}
		
		public String getName()
		{
			System.out.println("getName");
			return name;
		}
		
		public void update()
		{
			System.out.println("update");
		}
		
		public void delete()
		{
			System.out.println("delete");
		}
	}
 

 3 编写切面类,即监听类和方法执行的类

 

 

package com.aop.spring;
	
	import org.aspectj.lang.ProceedingJoinPoint;
	import org.aspectj.lang.annotation.After;
	import org.aspectj.lang.annotation.AfterReturning;
	import org.aspectj.lang.annotation.AfterThrowing;
	import org.aspectj.lang.annotation.Around;
	import org.aspectj.lang.annotation.Aspect;
	import org.aspectj.lang.annotation.Before;
	import org.aspectj.lang.annotation.Pointcut;
	import org.springframework.stereotype.Component;
	
	@Component("manInterceptor")
	@Aspect
	public class ManInterceptor {
		
		/**
		 * 该方法意思就是监听com.aop.spring下所有类的所有方法,以下为具体的说明
		 * 定义切入点
		 * 第一个*表示方法的返回值,这里使用通配符,只有返回值符合条件的才拦截,(!void表示有返回值)
		 * 第一个..表示com.aop.spring包及其子包
		 * 第二个*表示包下所有的java类都被拦截
		 * 第三个*表示类的所有方法都被拦截
		 * (..)表方法的参数可以任意多个,
		 * 如[String ,Integer]表示第一个参数是String第二个参数是Integer的方法才被拦截
		 */
		@Pointcut("execution(* com.aop.spring.*.*(..))")
		private void pointCutMethod()
		{
			
		}
		
		/**
		 * 定义前置通知 并设置了方法必须包含一个字符参数
		 */
		@Before("pointCutMethod() && args(userName)")
		public void doBefore(String userName)
		{
			System.out.println("前置通知"+userName); 
		}
		
		/**
		 * 定义后置通知,并设置了只有string返回值的方法才会拦截
		 */
		@AfterReturning(pointcut="pointCutMethod()",returning="result")
		public void doAfterReturning(String result)
		{
			System.out.println("后置通知"+result);
		}
		
		/**
		 * 定义例外通知
		 */
		@AfterThrowing("pointCutMethod()")
		public void doAfterException()
		{
			System.out.println("异常通知"); 
		}
		
		/**
		 * 定义最终通知
		 */
		@After("pointCutMethod()")
		public void doAfter()
		{
			System.out.println("最终通知"); 
		}
		
		
		/**
		 * 定义环绕通知
		 */
		@Around("pointCutMethod()")
		public Object doAround(ProceedingJoinPoint pjp) throws Throwable
		{
			System.out.println("进入方法");
			Object o = pjp.proceed();
			System.out.println("退出方法");
			return o;
		}
	}

 4 编写测试类AopTest

 

 package com.aop.spring;
	
	import org.springframework.context.ApplicationContext;
	import org.springframework.context.support.ClassPathXmlApplicationContext;
	
	public class AopTest {
	
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
			Man man = (Man)ctx.getBean("man");
			man.add("sky");
		}
	
	}
 

 5 总结:测试类输出如下

进入方法

add

后置通知null

最终通知

退出方法

表示Man的add方法被拦截了,并执行了切面类中各种符合条件的监听方法。

可以通过修改切面类中的各种配置来满足不同的处理需求。


分享到:
评论

相关推荐

    spring-aop.jar各个版本

    内容包括: spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar ...spring-aop-2.5.6.jar spring-aop-3.0.0.RELEASE.jar spring-aop-3.0.2.RELEASE.jar spring-aop-sources.jar

    spring-aop-2.5.6.jar

    spring-aop-2.5.6.jar

    spring2.5.6 aop简单示例

    spring2.5.6 aop简单示例,导入可运行,包括必须jar包

    spring-aop-2.5.6.jar,jfreechart-1.0.13.jar,commons-fileupload.jar,

    commons总包+spring总包+常用包.rar,jstl,图表,日志,文件上传,httpclient请求方式

    spring-aop-2.5.6.SEC03.jar

    spring-aop.jar 各个版本,免费下载 Spring 的面向切面编程,提供 AOP(面向切面编程)的实现。 如果下载不了,关注我,评论区联系我。

    spring3源码集合

    spring-aop-3.1.3.RELEASE-sources.jar spring-asm-3.1.3.RELEASE-sources.jar spring-aspects-3.1.3.RELEASE-sources.jar spring-beans-3.2.0.RELEASE-sources.jar spring-context-3.1.3.RELEASE-sources.jar ...

    SSH2--spring 2.5.6 + struts 2.2.1 + hibernate 3.5.5全部的注解的 M V C

    spring 2.5.6 + struts 2.2.1 + hibernate 3.5.5 内有 AOP 的切面、全部的注解的 M V C 结构,之外还在上网上找了一个同学的学习笔记一起打包,感觉好不错!

    spring2.5.6_参考文档

    spring2.5.6_参考文档,包括ioc,aop,于hibernate的集成,和struts2的集成!

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,包含ssh最新框架的集成,IOC注入,AOP面向切面编程.

    spring aop依赖jar包

    springaop依赖的jar包,spring版本2.5.6,如果需要,可以下载使用,欢迎各位评论指出不足

    spring AOP aspectjrt

    spring AOP aspectjrt 自带的所有需要包 aspectjrt-1.6.9.jar aspectjweaver-1.6.9.jar cglib-nodep-2.2.jar spring-2.5.6.jar asm-2.2.3.jar asm.commons-2.2.3.jar asm.util-2.2.3.jar

    spring-xmemcached

    需要xmemcached-1.2.5+spring-2.5.6 class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"> ${XMemcached_servers} <!-- server's weights --> ...

    三大框架基本包(spring,hibernate,struts,logging)

    三大框架基本包(spring,hibernate,struts)包含commons-beanutils,dom4j-1.6.1,hibernateOrJPA,spring2.5.6,struts-1.3.8-lib,struts2.0.14

    Spring2.5学习笔记

    基于 Spring2.5.6 包含Spring2.5中的信赖注入、AOP、事务管理等较全面的内部。

    spring_note.rar_inversion_spring concept

    课程内容 面向接口(抽象)编程的概念与好处 IOC/DI的概念与好处 ...Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要) opensessionInviewfilter(记住,解决什么问题,怎么解决) Spring JDBC

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    spring-web-2.5.6.jar //1 struts2-core-2.1.6.jar //2 struts2-convention-plugin-2.1.6.jar //2* struts2-spring-plugin-2.1.6.jar //1 xwork-2.1.2.jar //2 xerces-2.6.2.jar //3 xml-apis.jar //3 注:以下包...

    Spring学习笔记

    课程内容 面向接口编程(面向抽象编程) 什么是IOC(DI),有什么好处 Spring简介 Spring IOC配置与应用 什么是AOP Spring AOP配置与应用 Spring整合Hibernate Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2

    spring学习笔记

    新手学习spring的笔记,面向接口(抽象)编程的概念与好处,IOC/DI的概念与好处,AOP的概念与好处,Spring简介,Spring应用IOC/DI,Spring应用AOP(重要),Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合……

    J2EE SSH2架构(2)

    J2EE SSH2架构设计 Struts2.1.8+Spring2.5.6+Hibernate3.3整合,采用AOP事务管理方式

    Spring中文帮助文档

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

Global site tag (gtag.js) - Google Analytics