`
guzizai2007
  • 浏览: 360775 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于@Aspect的AOP配置

 
阅读更多

1、Spring除了支持Schema方式配置AOP,还支持注解方式:使用@Aspect来配置

2、Spring默认不支持@Aspect风格的切面声明,通过如下配置开启@Aspect支持:

<aop:aspectj-autoproxy/>

3、通过以上配置,Spring就能发现用@Aspect注解的切面内并把它应用到目标对象上。

4、定义一个切面:

@Aspect
public class AspectStyle {

	@Before("execution(* com.sxit..*.*(..))")
	public void before(){
		System.out.println("方法执行前执行.....");
	}
}

 5、后置返回通知:

@AfterReturning("execution(* com.sxit..*.*(..))")
public void afterReturning(){
		System.out.println("方法执行完执行.....");
}

 6、后置异常通知:

@AfterThrowing("execution(* com.sxit..*.*(..))")
public void throwss(){
		System.out.println("方法异常时执行.....");
}

 7、后置最终通知:

@After("execution(* com.sxit..*.*(..))")
public void after(){
		System.out.println("方法最后执行.....");
}

 8、环绕通知:

@Around("execution(* com.sxit..*.*(..))")
public Object around(ProceedingJoinPoint pjp){
		System.out.println("方法环绕start.....");
		try {
			pjp.proceed();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		System.out.println("方法环绕end.....");
}

 9、按上面的每一个通知都要写一个定义,其实这部分可以抽出来,定义个一个公共的切入点。

package com.sxit;

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;

@Aspect
public class AspectStyle {
	
	@Pointcut("execution(* com.sxit..*.*(..))")
	public void init(){
		
	}

	@Before(value="init()")
	public void before(){
		System.out.println("方法执行前执行.....");
	}
	
	@AfterReturning(value="init()")
	public void afterReturning(){
		System.out.println("方法执行完执行.....");
	}
	
	@AfterThrowing(value="init()")
	public void throwss(){
		System.out.println("方法异常时执行.....");
	}
	
	@After(value="init()")
	public void after(){
		System.out.println("方法最后执行.....");
	}
	
	@Around(value="init()")
	public Object around(ProceedingJoinPoint pjp){
		System.out.println("方法环绕start.....");
		Object o = null;
		try {
			o = pjp.proceed();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		System.out.println("方法环绕end.....");
		return o;
	}
}

 10、打印信息:

方法before前执行.....
方法环绕start.....
我看.....................
方法after执行.....
方法环绕end.....
方法afterReurning执行.....

 

参考自:http://jinnianshilongnian.iteye.com/blog/1418598

              http://ch-space.iteye.com/blog/493956

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    spring4 AOP 面向切面编程@Aspect

    除了注解式AOP,Spring还支持基于XML的配置,但注解方式更简洁且易于理解和维护。在实际应用中,通常会结合使用`@Aspect`和其他Spring注解如`@Service`、`@Repository`和`@Controller`,以实现全面的依赖注入和AOP...

    基于spring@aspect注解的aop实现过程代码实例

    在Spring的配置文件中,我们添加了一个aop命名空间,并在其中定义了一个aspect元素,以便Spring可以找到我们的切面类。 优点 使用Spring @Aspect注解的AOP实现过程代码实例有很多优点。首先,它可以将关注点和业务...

    AOP的相关概念,基于XML的AOP的配置,基于注解的AOP配置

    无论是基于XML的AOP配置还是基于注解的AOP配置,其核心都是将横切关注点从业务逻辑中分离出来,从而实现更好的代码组织和管理。选择哪种配置方式取决于项目的具体需求和个人偏好。对于简单的项目或小型团队,基于...

    AOP@Work AOP 工具比较

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在通过将关注点分离,提高软件的模块化程度。AOP的核心是切面,它封装了横切关注点,如日志、事务管理、性能监控等,使得这些功能可以独立于主...

    spring aspect 配置2种方式

    自Spring 2.5起,Spring提供了基于注解的AOP配置,这种方式更加简洁。我们可以在类上使用`@Aspect`注解来声明一个切面,并在方法上使用`@Before`、`@After`等注解定义通知。例如: ```java @Aspect @Component ...

    Spring 基于基于XML配置方式实现AOP

    然而,随着Spring的发展,基于注解的AOP配置逐渐成为主流,因为它的简洁性和可读性更强。但这并不意味着XML配置方式失去了价值,尤其是在需要更细粒度控制或者与旧项目集成时,XML配置依然有着其独特的优势。 总的...

    @AspectJ配置Spring AOP,demo

    `基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的Spring AOP应用程序。 通过以上内容,我们可以...

    AOP 和 Aspect 注解切入 测试 Demo

    基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api 定义前、后置处理方法,并通过代理工厂类获取代理对象(代码或Xml配置实现) 2.ProxyFactoryBean 显式地设置 Advisors、Advice、Target等(基于代理...

    Xml配置实现AOP

    以下是一个基于代理的AOP配置示例: ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref="loggingBean"&gt; &lt;aop:before method="logBefore" pointcut="execution(* com.example.service.*.*(..))"/&gt; &lt;aop:...

    Aop配置示例

    通过合理的AOP配置,我们可以实现对特定方法的拦截,并在这些方法抛出异常时执行自定义的处理逻辑,从而提高了代码的健壮性和用户体验。这不仅展示了Spring框架的强大功能,也体现了面向切面编程在实际项目中的价值...

    基于注解配置和使用spring AOP(spring mvc框架)

    二、基于注解的AOP配置 1. **启用AOP代理**:在Spring配置文件中,通过&lt;aop:aspectj-autoproxy/&gt;元素启用基于注解的AOP。 ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop=...

    Spring 基于注解方式实现AOP

    在Spring框架中,基于注解的AOP(面向切面编程)是一种强大的工具,它允许开发者无需编写XML配置即可实现切面。这种编程方式极大地提高了代码的可读性和可维护性。下面我们将深入探讨如何使用注解来实现Spring AOP。...

    spring 2.0使用AOP实例(基于Annotation的配置方式)

    Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了...

    spring-aop标签和配置文件两种方式实例

    从Spring 3.0开始,引入了基于注解的AOP配置,这使得AOP的配置更加简洁和直观。首先,我们需要在`@Aspect`注解的类中定义切入点和通知: ```java @Aspect @Component("loggingAspect") public class LoggingAspect ...

    Spring Aop四个依赖的Jar包

    Spring AOP就是基于这些接口进行设计的,因此这个库是Spring AOP和其他AOP实现之间协作的基础。 在实际使用中,我们需要在项目的类路径下包含这些Jar包,并在Spring配置文件中启用AOP支持。例如,可以通过以下XML...

    基于annotation的aop实现

    基于Annotation的AOP实现是Spring框架的一个重要特性,它极大地简化了AOP的使用。在本篇文章中,我们将深入探讨基于Annotation的AOP实现,特别是动态代理的理念。 首先,了解什么是AOP。AOP的核心概念是“切面”...

    aop配置demo

    在本“aop配置demo”中,我们将探讨两种主要的AOP配置方式:基于XML的配置和基于注解的配置。 首先,让我们深入了解一下基于XML的配置。在Spring的XML配置文件中,我们可以通过`&lt;aop:config&gt;`标签来启用AOP支持。...

    08 基于注解的AOP实现.rar

    基于注解的AOP实现是Spring提供的一种便捷方式,使得开发者无需编写XML配置文件即可实现切面。本篇将深入探讨如何在Spring中使用注解进行AOP编程。 首先,我们需要理解AOP的基本概念。AOP的核心是切面(Aspect),...

    springAOP配置动态代理实现

    2. **注解配置**:Spring 2.5引入了基于注解的AOP配置,可以在切面类上使用@Aspect注解,@Before、@After、@AfterReturning、@AfterThrowing和@Around定义通知,@Pointcut定义切点。例如: ```java @Aspect ...

    Spring基于注解实现AOP

    为了启用注解驱动的AOP,需要在Spring配置文件中添加以下配置: ```xml &lt;aop:aspectj-autoproxy /&gt; ``` 或者在Java配置类中添加: ```java @Configuration @EnableAspectJAutoProxy public class AppConfig { // ...

Global site tag (gtag.js) - Google Analytics