`

Spring学习笔记(二) -aop

阅读更多

 


要进行AOP编程,首先就要引入aop命名空间,Spring提供了两种切面方式,实际工作中我们可以任选其一:

  • 基于XML配置方式进行AOP开发
  • 基于注解方式进行AOP开发

切面类:

public class Security {     //切面
   public void checkSecurity(JoinPoint joinPoint){  //通知
           System.out.println("进行安全检查 ");
   }
} 

如果使用XML配置方式,需要在文件中使用<aop:config>标签,如:

<bean id="security" class="切面类" /><!-- 定义切面对象 -->
<bean id="userManager" class="目标对象类" /><!--创建接口实现类对象-->
    <aop:config>  <!--所有的切面和通知都必须定义在aop:config元素内部 -->
      <aop:aspect ref="security">  <!-- 声明切面  -->
         <!-- 声明切入点 -->
         <aop:pointcut id="userManagerPointcut" 
               expression="execution(* *.*(..))"/>
         <!--声明后置通知,在匹配的方法完全执行后运行-->
         <aop:after-returning method="checkSecurity" pointcut-ref="userManagerPointcut"/>
       </aop:aspect>
    </aop:config>
 

 

如果想在通知中获取相关数据,任何通知方法可以将第一个参数定义为org.aspectj.lang.JoinPoint类型 (环绕通知需要定义第一个参数为ProceedingJoinPoint类型, 它是 JoinPoint 的一个子类)。JoinPoint 接口提供了一系列有用的方法,比如 getArgs()(返回方法参数)、 getThis()(返回代理对象)、getTarget()(返回目标)、 getSignature()(返回正在被通知的方法签名)和 toString() (打印出正在被通知的方法的有用信息)。

基于注解的方式除了在配置文件中引入aop的命名空间以外,还需要打开自动代理:

<aop:aspectj-autoproxy/>

这个标签将启用Spring对@AspectJ的支持,配置文件里面只需要声明切面对象和目标对象就行了,在类上标注@Aspect注解用以声明切面,然后在切面的方法上面标注通知或者切入点.

 

   定义切入点的几点注意:

        * 切入点使用方法定义的形式出现

        * 方法的定义

        * 方法的修饰符private修饰

        * 方法的返回值类型是void

        * 方法的名称自定义

        * 方法没有参数

        * 方法有方法体,方法体为空

在方法上使用@Pointcut定义切入点,如:

@Pointcut("execution( * cn.itcast.aop.aspectJ.before.UserManagerImpl.save*(..))")
private void  perform(){}

切入点表达式写法:

*    切入点表达式的写法

*    execution(主要)表示匹配方法执行的连接点

*    例如: * com.itcast.service..*.save*(..))

*         1 "*"  表示方法的返回类型任意

*         2 com.itcast.service..*  表示service包及其子包中所有的类

*         3 .save* 表示类中所有以save开头的方法

*         4 (..) 表示参数是任意数量

 

定义通知:

/**
 * @Before表示前置通知
 *   等价于
 *   aop:before method="checkSecurity" pointcut-ref="perform" 
 * @param joinPoint
 */
@Before("perform()||perform1()")            //可以使用多个切入点,用||隔开
public void checkSecurity(JoinPoint  joinPoint){
   System.out.println("进行安全性检查");
    
   if(joinPoint.getArgs()!=null&&joinPoint.getArgs().length>0){
       for(int i=0;i<joinPoint.getArgs().length;i++){
            System.out.println("方法的参数  "+joinPoint.getArgs()[i]);
       }
   }
    
   //获取方法的签名,方法的名称,方法的返回类型
   Signature signature=joinPoint.getSignature();
   System.out.println("方法的名称  "+signature.getName());
    
} 

 


更多信息请查看 java进阶网 http://www.javady.com

3
1
分享到:
评论

相关推荐

    SpringDM笔记7-开发SpringDM Bundle

    SpringDM提供了一种在OSGi容器中使用Spring IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)的方法。 在本笔记中,我们将深入探讨如何开发SpringDM Bundle。首先,我们需要理解OSGi的基本概念,...

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    SSH笔记-AOP

    SSH笔记主要围绕的是Spring框架中的AOP(面向切面编程)特性进行讲解,结合了动态代理和基于注解的配置方式。AOP是Spring框架的一个重要组成部分,它提供了一种模块化和解耦代码的方式,使得我们可以将关注点分离到...

    Spring-IOC-AOP.md

    Spring学习笔记,主要包括核心技术IOC和AOP

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring学习笔记(14)----使用CGLIB实现AOP功能

    在本篇Spring学习笔记中,我们将探讨如何使用CGLIB库来实现AOP功能。 CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它被广泛用于动态代理和运行时织入AOP切面。在Spring中,如果目标类没有...

    Spring2.5.6学习笔记-最新

    以上是 Spring 2.5.6 学习笔记中的关键知识点,通过这些基础知识的学习,开发者可以开始构建基于 Spring 框架的应用程序。接下来,可以进一步深入学习 Spring 的高级特性,如事务管理、安全性、Web 开发等方面的知识...

    spring ioc aop mvc boot-学习笔记.docx

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...

    spring-AOP面向切面编程所需jar包.zip

    该压缩包包含--学习笔记(05):轻松搞定Spring全家桶(初识篇)-面向切片编程AOP:--系列博客中新需要的三个jar包。包括spring-aspects-5.2.7.RELEASE.jar和spring-aop-5.2.7.RELEASE.jar和...

    Spring学习笔记-cqupt

    在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个开源的、免费的 Java 框架,它的目标是减少企业级开发的复杂性。它集成了许多现有的技术,...

    Spring.NET学习笔记 - 刘冬.NET - 博客园

    这个压缩包包含了一系列刘冬.NET在博客园上发布的Spring.NET学习笔记,帮助读者深入理解这个强大的框架。 1. **控制反转(IoC)**: 控制反转是Spring.NET的核心概念之一,它将对象的创建和管理权交给了框架,而...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2docs

    这个文档集合包括了Spring的API参考、用户指南、开发者笔记等,是学习和使用Spring 2.5 RC2的宝贵资源。 首先,让我们了解一下Spring的核心特性。2.5版本引入了一些重要的增强,如依赖注入(Dependency Injection,...

    JSF2整合Spring3------JSF学习笔记4

    **JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...

    Spring.NET学习笔记-实现一个简易的IoC框架

    ### Spring.NET学习笔记-实现一个简易的IoC框架 #### 一、背景介绍与理论基础 在.NET领域中,Spring.NET框架是一个非常重要的轻量级框架,它支持依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    Spring Aop 学习笔记

    Spring Aop 学习笔记

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    SpringAop学习笔记以及实现Demo

    **Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...

Global site tag (gtag.js) - Google Analytics