`
chenyubo
  • 浏览: 79752 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

利用Spring中的AOP做权限管理

阅读更多
AOP在Spring中占有很重要的地位,做了一个例子是利用AOP来做一个登陆的身份验证。希望能对大家有所帮助,使用了AOP可以在不破坏你的代码的前提下帮你完成验证功能。
转一点AOP的知识:
程序代码:
    1、Spring只支持方法拦截,也就是说,只能在方法的前后进行拦截,而不能在属性前后进行拦截。
    2、Spring支持四种拦截类型:目标方法调用前(before),目标方法调用后(after),目标方法调用前后(around),以及目标方法抛出异常(throw)。
    3、前置拦截的类必须实现MethodBeforeAdvice接口,实现其中的before方法。
    4、后置拦截的类必须实现AfterReturningAdvice接口,实现其中的afterReturning方法。
    5、前后拦截的类必须实现MethodInterceptor接口,实现其中的invoke方法。前后拦截是唯一可以控制目标方法是否被真正调用的拦截类型,也可以控制返回对象。而前置拦截或后置拦截不能控制,它们不能印象目标方法的调用和返回。

    以上可以看出我们要选用实现MethodInterceptor接口的方法来完成这个功能。
    代码如下:
    接口类的定义:
    程序代码:
package com.dragon.study; 

    public interface ILogin { 

    public void login(String name); 

    } 


    接口实现类的定义:
     程序代码:
  
 package com.dragon.study.Impl; 

    import com.dragon.study.ILogin; 

    public class LoginImpl implements ILogin { 

    /** 

    * Login 

    */ 

    public void login(String name) { 

    System.out.println("欢迎 " + name + "登陆!"); 

    } 

    } 

    
    最重要的拦截器的定义:
     程序代码:
  
 package com.dragon.Advice; 

    import org.aopalliance.intercept.MethodInterceptor; 

    import org.aopalliance.intercept.MethodInvocation; 

    public class LoginInterceptor implements MethodInterceptor { 

    /** 

    * Interceptor 

    */ 

    public Object invoke(MethodInvocation arg0) throws Throwable { 

    String name = (String)arg0.getArguments()[0]; 

    if (name.equals("flash")) { 

    System.out.println("这才是真正的用户! "); 

    return arg0.proceed(); 

    } else { 

    System.out.println("非法的用户~~~ "); 

    return null; 

    } 

    } 

    } 
  
   
ApplicationContext.XML的定义:
 
 <beans> 

    <bean id="loginInterceptor" class="com.dragon.Advice.LoginInterceptor"></bean> 

    <bean id="loginTarget" class="com.dragon.study.Impl.LoginImpl"></bean> 

    <bean id="login" class="org.springframework.aop.framework.ProxyFactoryBean"> 

    <property name="proxyInterfaces"> 

    <value>com.dragon.study.ILogin</value> 

    </property> 

    <property name="interceptorNames"> 

    <list> 

    <value>loginInterceptor</value> 

    </list> 

    </property> 

    <property name="target"> 

    <ref bean="loginTarget"/> 

    </property> 

    </bean> 

    </beans> 
    

    以上就是所有代码,下面做一个测试类:
    Test类定义:
    程序代码:
    package com;

    import Java.io.*;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.support.FileSystemXMLApplicationContext;

    import com.dragon.study.ILogin;

    public class Test {

    public static void main(String[] args) throws IOException {

    ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.XML");

    ILogin login = (ILogin)ctx.getBean("login");

    login.login("flash"); //用户为flash是正确用户,否则是错误的

    }

    }



分享到:
评论
1 楼 ronartest 2010-01-08  

  波哥,,你这里只配了一个需要拦截的地方。。那么假若有很多个类需要拦截,,那岂不是要写很多配置文件了?

相关推荐

    spring-aop-jar

    Spring AOP模块提供了实现AOP规范的功能,它允许开发者定义“切面”来封装系统中的横切关注点,如日志、事务管理等。该jar文件包含了Spring AOP的核心类和接口,如`org.springframework.aop.*`包下的`...

    基于spring_aop_权限管理系统原型

    在基于Spring AOP的权限管理系统原型中,我们探讨的核心是如何利用Spring的面向切面编程(Aspect-Oriented Programming,AOP)特性来实现细粒度的权限控制。AOP允许我们在程序运行时,对特定关注点(如日志、事务...

    Spring 2.5 AOP 例子

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

    使用SpringAop使用Oracle数据权限控制

    通过以上步骤,我们可以利用Spring AOP的强大功能,结合Oracle的权限体系,实现灵活且高效的数据权限控制。这种方法既保持了业务逻辑的清晰,又确保了数据的安全性。同时,由于Spring AOP的切面是解耦的,所以这种...

    spring-aop.jar

    在实际应用中,我们可以利用Spring AOP进行日志记录、事务管理、权限控制等。例如,通过定义一个切面类,包含前置通知记录方法调用日志,后置通知处理事务提交或回滚,以及异常通知进行异常处理。 四、实战案例 ...

    Spring Boot AOP权限控制模块开发

    在这个"Spring Boot AOP权限控制模块开发"项目中,我们将深入探讨如何利用AOP来构建一个自定义的权限管理模块。 首先,AOP的核心概念是切面(Aspect)、通知(Advice)、连接点(Join Point)、切点(Pointcut)和...

    spring之AOP(动态代理)

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。AOP的核心概念是切面、通知、连接点、切入点和织入。在...

    研究下Spring中AOP的实现?

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、...在实际项目中,可以利用Spring AOP进行事务管理、性能监控、权限控制等多种功能的实现。

    Spring中aop编程所需要的jar包

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限控制等,并将它们模块化为可重用的切面。为了在Spring中进行AOP编程,我们需要一些特定的JAR包。以下是...

    spring aop 实现权限的简单示例

    在本示例中,我们将深入探讨如何利用Spring AOP实现简单的权限验证。 首先,AOP的核心概念是切面(Aspect),它封装了横切关注点,比如日志、事务管理、权限验证等。在Spring AOP中,切面通过通知(Advice)来定义...

    Spring AOP 权限

    本篇文章将深入探讨如何利用Spring AOP来实现权限管理,以及相关的知识点。 首先,权限管理是系统安全的关键组成部分,它确保只有具有适当权限的用户才能访问特定的资源或执行特定的操作。在Spring AOP中,我们可以...

    Java利用spring aop进行监测方法执行耗时

    可扩展性强:使用 Spring AOP 进行方法耗时监测,可以方便的对其他的切面进行扩展,例如:日志、异常处理、权限控制等切面。 4. 提高系统性能:通过对系统中的方法进行耗时监测,可以及时发现系统中的性能瓶颈,...

    spring-aop-4.0.0.RELEASE

    《Spring AOP 4.0.0.RELEASE:深度解析与应用》 Spring AOP(Aspect Oriented Programming,面向切面编程)是...理解并掌握这些核心概念和实践技巧,能够帮助我们更好地利用Spring AOP构建健壮且易于维护的系统。

    Spring实现AOP的4种方式

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。本篇文章将详细探讨Spring实现AOP的四种主要方法:基于代理的方式、...

    spring_AOP.rar_876.aop_java aop_spring_aop

    在SSH(Struts、Spring、Hibernate)经典企业级开发框架中,Spring AOP扮演着至关重要的角色,用于实现如日志记录、事务管理、权限控制等跨切面的关注点。 首先,了解AOP的基本概念。面向切面编程是一种编程范式,...

    适用spring 实现AOP思想

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改代码的情况下,通过插入切面来增强或改变已有功能的能力。...在实际项目中,合理利用AOP能有效提升开发效率,实现业务需求。

    使用Spring配置文件实现AOP

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

    Spring AOP实现机制

    **Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的...通过深入理解Spring AOP的实现机制,我们可以更好地利用这一强大的工具,优化我们的应用程序。

    Spring-AOP需要的外部包

    Spring AOP可以利用AspectJ的编织功能,即使目标对象不是由Spring管理的,也能实现切面的织入。当你的项目中包含了`aspectjweaver.jar`,就意味着你可能正在使用AspectJ的编译时或运行时编织,以便更好地支持Spring ...

Global site tag (gtag.js) - Google Analytics