http://lighter.iteye.com/blog/42673
这一排在复习
spring的一些知识点,顺便写一下博客,下面看一下利用
spring AOP做的管理权限简单实例;
首先定义一个用户:
- publicclassUser{
-
privateStringusername;
-
publicStringgetUsername(){
-
returnusername;
- }
-
publicvoidsetUsername(Stringusername){
-
this.username=username;
- }
- }
用户有三种人:未注册用户,注册用户,与管理员
注册用户可以可以发表,回复帖子
管理员除了可以发表,回复帖子,还可以删除帖子!
下面定义TestCommunity接口:
- publicinterfaceTestCommunity{
-
publicvoidanswerTopic();
-
publicvoiddeleteTopic();
- }
实现上面接口的TestCommunityImpl类:
- publicclassTestCommunityImplimplementsTestCommunity{
-
-
publicvoidanswerTopic(){
-
System.out.println("可以发表,回复帖子");
- }
-
-
publicvoiddeleteTopic(){
-
System.out.println("可以删除帖子!");
- }
- }
下一步,建立一下依赖注入的实现类TestResultImpl:
- publicclassTestResultImpl{
-
privateTestCommunitytest;
-
publicvoidsetTest(TestCommunitytest){
-
this.test=test;
- }
-
publicvoidanswerTopic()
- {
- test.answerTopic();
- }
-
publicvoiddeleteTopic()
- {
- test.deleteTopic();
- }
- }
接下来,就是最重要的一个类,拦截器,Around处理类型的,类TestAuthorityInterceptor:
- importorg.aopalliance.intercept.MethodInterceptor;
-
importorg.aopalliance.intercept.MethodInvocation;
-
-
publicclassTestAuthorityInterceptorimplementsMethodInterceptor{
-
privateUseruser;
-
publicUsergetUser(){
-
returnuser;
- }
-
publicvoidsetUser(Useruser){
-
this.user=user;
- }
-
-
publicObjectinvoke(MethodInvocationinvocation)throwsThrowable{
- StringmethodName=invocation.getMethod().getName();
-
if(user.getUsername().equals("unRegistedUser")){
-
System.out.println("你的身份是未注册用户,没有权限回复,删除帖子!");
-
returnnull;
- }
-
if((user.getUsername().equals("user"))
-
&&(methodName.equals("deleteTopic"))){
-
System.out.println("你的身份是注册用户,没有权限删除帖子");
-
returnnull;
- }
-
-
returninvocation.proceed();
- }
- }
配置文件:
- <?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
-
<beanid="authTarget"class="org.test.lighter.TestCommunityImpl"/>
- <!--其中的username可以写为admin,user,和unRegistedUser-->
-
<beanid="user"class="org.test.lighter.User">
-
<propertyname="username"value="user"/>
- </bean>
- <!--配置拦截器-->
-
<beanid="TestAuthorityInterceptor"
-
class="org.test.lighter.TestAuthorityInterceptor">
-
<propertyname="user"ref="user"/>
- </bean>
- <!--配置代理工厂bean-->
-
<beanid="service"
-
class="org.springframework.aop.framework.ProxyFactoryBean">
-
<propertyname="proxyInterfaces">
- <value>org.test.lighter.TestCommunity</value>
- </property>
-
<propertyname="target"ref="authTarget"/>
-
<propertyname="interceptorNames">
- <list>
- <value>TestAuthorityInterceptor</value>
- </list>
- </property>
- </bean>
-
<beanid="testResult"class="org.test.lighter.TestResultImpl">
-
<propertyname="test"ref="service"/>
- </bean>
- </beans>
再写一个执行文件BeanTest:
- importorg.springframework.context.ApplicationContext;
-
importorg.springframework.context.support.FileSystemXmlApplicationContext;
-
publicclassBeanTest{
-
publicstaticvoidmain(String[]args)throwsException
- {
-
ApplicationContextctx=newFileSystemXmlApplicationContext("src/bean.xml");
-
TestResultImpltest=(TestResultImpl)ctx.getBean("testResult");
- test.answerTopic();
- test.deleteTopic();
- }
- }
执行结果:大家猜一下啦
- 1、如果是管理员,打印出:
- 可以发表,回复帖子
- 可以删除帖子!
-
2、如果是注册用户:
- 可以发表,回复帖子
- 你的身份是注册用户,没有权限删除帖子
-
3、未注册用户:
- 你的身份是未注册用户,没有权限回复,删除帖子!
分享到:
相关推荐
在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(Aspect Oriented Programming,面向切面编程)是其核心特性之一,用于处理系统中的横切关注点,如日志、事务管理等。本实例将深入探讨如何在...
**Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...
Spring AOP的XML配置实例展示了如何将横切关注点(如日志、事务等)与业务逻辑解耦,提高了代码的可复用性和可维护性。这种编程模式在大型项目中尤其有用,因为它使得系统的结构更加清晰,每个组件都专注于自己的...
在本实例中,Spring AOP可能被用来实现事务管理,确保数据库操作的一致性。 3. Spring Security:这是一个强大的安全框架,提供认证、授权和会话管理等功能。Spring Security可以保护你的应用免受各种攻击,如跨站...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从核心业务逻辑中分离出来,比如日志记录、事务管理、权限控制等。本实例将深入探讨如何在Spring 4.0版本中实现AOP。 首先,AOP的...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、性能监控等,并将它们模块化为可重用的组件,称为切面。本实例主要探讨如何在Spring AOP中实现拦截器。 ...
在Web项目中,Spring AOP通常用于处理跨多个控制器和业务层方法的通用任务,如记录请求日志、验证权限、事务管理等。通过配置或注解,你可以确保这些逻辑在每次相关方法执行时自动触发,从而提高代码的可读性和可...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义“切面”,这些切面封装了应用程序中的交叉关注点,如日志、事务管理、权限检查等。Spring AOP是基于代理的,它可以为普通Java对象(POJOs)...
以下是一个简单的Spring AOP代码实例,用于展示如何创建切面、通知以及如何配置切入点: 1. 首先,定义一个切面类,包含一个前置通知: ```java @Aspect @Component public class LoggingAspect { @Before(...
在实际的项目中,Spring AOP常用于事务管理、日志记录、性能监控、权限控制等场景。理解并熟练掌握Spring AOP,可以帮助我们编写更加模块化、可维护的代码,提升代码质量。通过上述的讲解,相信你已经对Spring AOP有...
9. **实际应用场景**:课程可能还会通过实例讲解AOP在实际项目中的应用,如记录日志、事务管理、权限校验等。 10. **最佳实践**:了解如何优雅地使用AOP,避免滥用导致的代码复杂性增加,以及如何进行测试和调试AOP...
8. **AOP应用场景**:Spring AOP广泛应用于日志记录、事务管理、权限控制、缓存管理等场景。通过切面可以将这些通用功能与业务逻辑解耦,提高代码的可维护性和可重用性。 总之,Spring AOP的默认代理方式是动态代理...
本文将基于"spring aop小实例"的标题,结合描述中的链接,深入探讨Spring AOP的基本概念、工作原理以及如何通过实际示例来理解和应用。 1. **AOP基本概念** - 面向切面编程(AOP)是面向对象编程(OOP)的补充,它允许...
在本实例中,我们主要探讨的是如何利用Maven构建一个基于Spring框架的Web应用程序,特别是关注Spring AOP(面向切面编程)在用户注册功能中的应用。Maven是一个强大的项目管理和依赖管理工具,它帮助开发者组织和...
在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...
Spring AOP(面向切面编程)则是一种流行的应用框架,它利用动态代理来实现对业务代码的切面增强,如日志、事务管理等。现在让我们深入探讨JDK动态代理和Spring AOP的原理。 首先,JDK动态代理基于Java的反射机制,...
在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇...