`

基于@AspectJ使用Spring AOP

阅读更多
[list=1]
  • 在spring的xml配置文件中配置aspectj
  • 如下:
    <aop:aspectj-autoproxy />
    
  • 创建注释的定义
  • 如下:
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface AroundPointCut {
    	boolean accessRead() default false;
    }
    
  • 声明切面、声明切入点、拦截对目标对象方法调用
  • 如下:
    <bean id="loggerAspect" class="com.aspect.AroundAspect"></bean>
    

    @Aspect // 声明切面
    public class AroundAspect {
    
    	// 声明切入点
    	@Pointcut("execution(@com.crane.aspect.AroundPointCut public * * (..))")
    	public void aroundPointCut() {
    
    	}
    
    	// 拦截对目标对象方法调用
    	@Around("com.crane.aspect.LoggerAspect.aroundPointCut()")
    	public Object doLoggerPointCut(ProceedingJoinPoint jp) throws Throwable {
    		// 获取连接点的方法签名对象
    		MethodSignature joinPointObject = (MethodSignature) jp.getSignature();
    		// 连接点对象的方法
    		Method method = joinPointObject.getMethod();
    		// 连接点方法方法名
    		String name = method.getName();
    		Class<?>[] parameterTypes = method.getParameterTypes();
    		// 获取连接点所在的目标对象
    		Object target = jp.getTarget();
    		// 获取目标方法
    		method = target.getClass().getMethod(name, parameterTypes);
    		// 返回@AroundPointCut的注释对象
    		AroundPointCut joinPoint = method.getAnnotation(AroundPointCut.class);
    		if (!joinPoint.accessRead()) {
    			throw new ApplicationException("没有权限!");
    		}
    		return jp.proceed();
    	}
    }
    
  • 业务的服务添加@AroundPointCut注释
  • 如下:
    	@AroundPointCut(accessRead = true)
    	public Object queryProuct() throws ApplicationException {
    		//TODO
    		return null;
    	}
    

    [/list]
    2
    1
    分享到:
    评论

    相关推荐

      @AspectJ配置Spring AOP,demo

      `springAOP2`可能是一个包含具体示例代码的目录。`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的...

      征服Spring AOP—— @AspectJ

      @AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了AOP的使用。本篇文章将深入探讨@AspectJ的使用方法和背后的原理。 首先,我们需要理解面向切面编程(AOP)的基本概念。AOP是一种编程范式,它允许开发者将...

      spring AOP 实例(@AspectJ)

      一个基于@AspectJ的spring2.0 AOP应用实例,很小很简单,没有任何额外信息,最适合AOP入门学习。使用log4j打印信息。把项目直接import进myeclipse就可以使用啦......

      Spring @AspectJ 实现AOP 入门例子

      @AspectJ是Spring支持的一种AOP实现,它使用注解来定义切面,简化了配置过程。 创建一个Spring AOP应用的第一步是设置项目结构。在给定的压缩包文件中,我们可能看到一个名为"src"的目录,通常这个目录包含项目的源...

      Spring AOP @AspectJ 入门实例

      本实例将带你深入理解并实践Spring AOP与@AspectJ的结合使用。 首先,了解AOP的基本概念。面向切面编程是一种编程范式,它允许程序员定义“切面”,即跨越多个对象的行为或责任。这些切面可以包含业务逻辑、日志、...

      Spring AOP 概念理解及@AspectJ支持

      Spring AOP的实现基于动态代理,对于接口实现类,它使用Java的`java.lang.reflect.Proxy`类来创建代理对象;对于没有接口的类,Spring使用CGLIB库生成子类。在运行时,Spring AOP会根据切面定义生成代理对象,然后...

      Spring的AOP实例(XML+@AspectJ双版本解析+源码+类库)

      @AspectJ是一种基于Java语言的AOP实现,允许在切面类上直接使用注解定义切点和通知。这种方式更加简洁和直观。例如: ```java @Aspect @Component public class LoggingAspect { @Before("execution(* ...

      Spring 使用AspectJ 实现 AOP(基于xml文件、基于注解)

      本教程将探讨如何在Spring中结合AspectJ实现AOP,包括基于XML配置和基于注解的方式。 **一、AOP基本概念** AOP的核心概念有切面(Aspect)、连接点(Join Point)、通知(Advice)、切点(Pointcut)和引入...

      Spring 使用AspectJ 实现 AOP

      在Spring中,我们可以使用AspectJ来实现AOP,AspectJ是一个强大的AOP框架,它可以与Spring无缝集成,提供更细粒度的控制。 首先,让我们了解一下AOP中的通知类型: 1. **前置通知**(Before Advice):在目标方法...

      Spring Aop四个依赖的Jar包

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

      spring对AOP的支持(使用AspectJ进行AOP演示)

      Spring 提供了两种主要的 AOP 实现方式:基于代理的和基于 AspectJ 的。基于代理的方式是 Spring 默认的实现,它通过 JdkDynamicProxy 或 CGLIB 创建代理对象来实现切面。而基于 AspectJ 的方式则更为强大,它允许...

      aspectj的jar spring使用aop需要的jar

      8. **类型匹配(Type Matching)**:AspectJ的强项之一是类型匹配能力,它允许你基于类或接口来定义切入点,而不仅仅是方法签名,这比Spring AOP的基于方法签名的切入点更灵活。 9. **注解驱动(Annotation-Based)...

      Spring AOP的AspectJ支持jar包

      Spring AOP的AspectJ支持jar包; 包括: com.springsource.net.sf.cglib-2.2.0.jar com.srpingsource.org.aopalliance-1.0.0.jar com.srpingsource.org.aspectj.weaver-1.68.RELEASE.jar

      Spring AOP 16道面试题及答案.docx

      Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见的,它允许开发者直接在方法上使用注解来定义切面。 Spring AOP中有五种不同类型的的通知(Advice): 1....

      Spring AOP + AspectJ annotation example

      总结来说,Spring AOP与AspectJ注解的结合使用是Java开发中的强大工具,它们提供了一种优雅的方式来管理横切关注点,提高了代码的可读性和可维护性。通过学习和熟练掌握这一技术,开发者能够更好地应对复杂的企业级...

      简单spring aop 例子

      Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    Global site tag (gtag.js) - Google Analytics