`
阅读更多

基于spring-framework-4.1.7使用aop

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2015年9月5日 23:46:28 星期六

http://fanshuyao.iteye.com/

 

一、spring中aop的使用需要的jar包:
1、aopalliance.jar
2、aspectjweaver-1.6.12.jar

 

3、commons-io-2.4.jar
4、commons-logging-1.2.jar

 

5、spring-aop-4.1.7.RELEASE.jar
6、spring-aspects-4.1.7.RELEASE.jar
7、spring-beans-4.1.7.RELEASE.jar
8、spring-context-4.1.7.RELEASE.jar
9、spring-core-4.1.7.RELEASE.jar
10、spring-expression-4.1.7.RELEASE.jar

 

备注:不需要使用apache中aspectj的jar包:aspectj-1.8.6.jar

 

二、springAop.xml配置
1、配置扫描包,把aop执行java类(AopLogging.java)用@Component注解,
然后用注解@Aspect声明该类为aop使用方式。
<context:component-scan base-package="com.spring.aop.*">
</context:component-scan>

2、接着声明使用aop代码
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

 

三、在java类(AopLogging.java)中的方法使用注解声明通知。
通知有:
1、@Before 前置通知
2、@After 后置通知
3、@AfterReturning 结果通知
4、@AfterThrowing 异常通知
5、@Around 环绕通知(其实此通知为上面4个通知的集合)


然后在通知注解后添加“切点”
@Before("execution(public int com.spring.aop.service.impl.CalculationServiceImpl.*(int, int))")
@After("execution(* com.spring.aop.service.impl.CalculationServiceImpl.*)")

切点声明,即定义要使用aop的类或者类中的方法,可以用*来代替

 

 

注:附件中Java项目为无Jar包导出,需要在src目录下新建立一个lib文件夹,把jar放进去,

然后add to build path

 

 下面为aop的主要代码:

@Component
@Aspect
public class AopLogging {

	/**
	 * 前置通过,方法执行前执行
	 * @param joinpoint(org.aspectj.lang.JoinPoint;)
	 */
	@Before("execution(public int com.spring.aop.service.impl.CalculationServiceImpl.*(int, int))")
	public void beforeMethod(JoinPoint joinpoint){
		System.out.println("---------------the method: "+ joinpoint.getSignature().getName() + " is start.---------------");
		System.out.println("【@Before】the method called "+ joinpoint.getSignature().getName() + "'s args is "+ Arrays.asList(joinpoint.getArgs()));
	}
	
	/**
	 * @After 后置通知,不管程序有没有错,最后都会执行
	 * @param joinpoint
	 */
	@After("execution(public int com.spring.aop.service.impl.CalculationServiceImpl.*(int, int))")
	public void afterMethod(JoinPoint joinpoint){
		System.out.println("【@After】---------------the method: "+ joinpoint.getSignature().getName() + " is end.---------------");
	}
	
	/**
	 * @AfterReturning 结果通知,只有程序正常执行后才会返回结果通知
	 * @param joinpoint
	 * @param obj 对应returning="obj"的obj,名称一样
	 */
	@AfterReturning(value="execution(public int com.spring.aop.service.impl.CalculationServiceImpl.*(int, int))",
			returning="obj")
	public void returnMethod(JoinPoint joinpoint, Object obj){
		System.out.println("【@AfterReturning】the method called "+ joinpoint.getSignature().getName() + "'s result is " + obj);
	}
	
	/**
	 * @AfterThrowing 异常通知,程序产生异常后(符合异常抓取规则)执行
	 * @param joinpoint
	 * @param obj 对应throwing="obj"的obj,名称一样
	 */
	@AfterThrowing(value="execution(public int com.spring.aop.service.impl.CalculationServiceImpl.*(int, int))",
			throwing="obj")
	public void throwingMethod(JoinPoint joinpoint, Object obj){
		System.out.println("【@AfterThrowing】the method called "+ joinpoint.getSignature().getName() + " is throw Exeception:" + obj);
	}
	
}

 

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2015年9月5日 23:46:28 星期六

http://fanshuyao.iteye.com/

1
1
分享到:
评论

相关推荐

    Spring使用AOP的三个jar包

    要使用Spring的AOP功能,我们需要引入特定的库,这正是标题中提到的"Spring使用AOP的三个jar包"。 首先,我们来看`aspectjrt.jar`。这个库是AspectJ运行时环境的一部分,包含了运行时织入(runtime weaving)所需的...

    aspectj的jar spring使用aop需要的jar

    1. **Spring AOP**:Spring框架的AOP模块提供了一个轻量级的AOP实现,它允许你在不离开Spring生态系统的情况下使用AOP。Spring AOP主要用于方法拦截,通过代理模式来实现切面。 2. **AspectJ集成**:虽然Spring AOP...

    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.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    开发工具 spring-aop-4.3.6.RELEASE

    开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...

    spring-aop-5.2.0.RELEASE-API文档-中文版.zip

    赠送jar包:spring-aop-5.2.0.RELEASE.jar; 赠送原API文档:spring-aop-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.0.RELEASE.pom;...

    spring-aop-jar

    在IT领域,Spring框架是一个广泛使用的Java应用框架,它提供了许多功能,包括依赖注入、面向切面编程(AOP)等。"spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    spring,spring-aop-5.3.22.jar+aop+IDEA本地包

    spring-aop-5.3.22.jar Spring AOP provides an Alliance-compliant aspect-oriented programming implementation allowing you to define method interceptors and pointcuts to cleanly decouple code that ...

    spring-aop-5.0.10.RELEASE-API文档-中文版.zip

    赠送jar包:spring-aop-5.0.10.RELEASE.jar; 赠送原API文档:spring-aop-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.10.RELEASE....

    spring-aop-5.0.8.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-aop-5.0.8.RELEASE.jar; 赠送原API文档:spring-aop-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.8.RELEASE.pom;...

    Spring 2.5 AOP 例子

    Spring 2.5 AOP(面向切面编程)是Java应用程序中的一个重要概念,它允许开发者在不修改原有代码的情况下插入新的行为或监控。这个例子旨在帮助我们理解和应用Spring框架的AOP特性。以下是对该主题的详细解释: 一...

    spring-boot aop

    这个`spring-aop`示例项目很可能会包含上述步骤的实现,通过阅读源代码,我们可以更深入地理解Spring Boot AOP的使用。同时,它可能还会展示如何结合实际业务逻辑,比如服务层的方法调用,来演示AOP如何优雅地注入...

    spring-aop-5.3.12-API文档-中英对照版.zip

    赠送jar包:spring-aop-5.3.12.jar; 赠送原API文档:spring-aop-5.3.12-javadoc.jar; 赠送源代码:spring-aop-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.12.pom; 包含翻译后的API文档:spring...

    spring-aop-6.0.2.jar

    spring-aop-6.0.2.jar

    spring-aop-5.3.10-API文档-中文版.zip

    赠送jar包:spring-aop-5.3.10.jar; 赠送原API文档:spring-aop-5.3.10-javadoc.jar; 赠送源代码:spring-aop-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.10.pom; 包含翻译后的API文档:spring...

    Spring进行AOP操作需要的4个jar包

    Spring进行aop操作需要的4个jar包,包括aopalliance-1.0.jar、aspectjweaver-1.8.9.jar、spring-aop-4.3.0.RELEASE.jar、spring-aspects-4.3.0.RELEASE.jar。

    spring-aop-5.2.15.RELEASE-API文档-中文版.zip

    赠送jar包:spring-aop-5.2.15.RELEASE.jar; 赠送原API文档:spring-aop-5.2.15.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.15.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.15.RELEASE....

    spring之AOP(动态代理)

    在Spring Boot项目中,配置和使用AOP相对简单。首先,我们需要引入Spring AOP和AspectJ的依赖,这通常在pom.xml或build.gradle文件中完成。然后,我们可以定义一个切面(Aspect),它包含通知(Advice)——即在特定...

    spring-aop-3.2.0.RELEASE.jar

    spring-aop-3.2.0.RELEASE.jar,一个Spring中AOP的jar包

Global site tag (gtag.js) - Google Analytics