首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Spring学习札记(二) -aop

2012-08-30 
Spring学习笔记(二) -aop?要进行AOP编程,首先就要引入aop命名空间,Spring提供了两种切面方式,实际工作中我

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>
     

    ?

    如果想在通知中获取相关数据,任何通知方法可以将第一个参数定义为

     * @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