1.首先写一个User实例类,在程序中我们以个实体类userName属性来判断当前用户的权限:
package org.pan.bean;
public class User {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
2.定义一个业务接口TestCommunity;
package org.pan.bean.dao;
public interface TestCommunity {
public void answerTopic();
public void deleteTopic();
}
3.实例上面这个接口的服务:
package org.pan.bean.dao.impl;
import org.pan.bean.dao.TestCommunity;
public class TestCommunityImpl implements TestCommunity{
@Override
public void answerTopic() {
System.out.println("可以发表,回复帖子");
}
@Override
public void deleteTopic() {
System.out.println("可以删除帖子");
}
}
4.定义一个拦截器类,这个类将拦截上面接口中的方法,并判断当前User是否有权限调用接口中的方法:
package org.pan.interceptor;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.pan.bean.User;
public class TestAuthorityInterceptor implements MethodInterceptor{
private User user;
public void setUser(User user) {
this.user = user;
}
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
String methodName=methodInvocation.getMethod().getName();
if(user.getUserName().equals("unRegisterUser")){
System.out.println("你现在还没有登陆,没有权限回复帖子,删除帖子");
return null;
}
if(user.getUserName().equals("user")&&methodName.equals("deleteTopic")){
System.out.println("您的身份是注册用户,没有权限删除帖子");
return null;
}
return methodInvocation.proceed();
}
}
5.spring配置文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">
<bean id="testCommunity" class="org.pan.bean.dao.impl.TestCommunityImpl" />
<bean name="user" class="org.pan.bean.User">
<property name="userName" value="user" />
</bean>
<bean id="testAuthorityInterceptor" class="org.pan.interceptor.TestAuthorityInterceptor">
<property name="user" ref="user" />
</bean>
<bean name="proxyAop" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="testCommunity" />
<property name="interceptorNames">
<list>
<value>testAuthorityInterceptor</value>
</list>
</property>
</bean>
</beans>
6.大功告成,来个testMain测试类了:
package org.pan.test;
import org.pan.bean.dao.TestCommunity;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testMain {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
TestCommunity testCommunity = (TestCommunity) ctx.getBean("proxyAop");
testCommunity.answerTopic();
testCommunity.deleteTopic();
}
}
符件帖上工程全图与工程包:
- 大小: 10.1 KB
分享到:
相关推荐
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...
**Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...
Spring AOP的XML配置实例展示了如何将横切关注点(如日志、事务等)与业务逻辑解耦,提高了代码的可复用性和可维护性。这种编程模式在大型项目中尤其有用,因为它使得系统的结构更加清晰,每个组件都专注于自己的...
以下是一个简单的Spring AOP代码实例,用于展示如何创建切面、通知以及如何配置切入点: 1. 首先,定义一个切面类,包含一个前置通知: ```java @Aspect @Component public class LoggingAspect { @Before(...
本文将基于"spring aop小实例"的标题,结合描述中的链接,深入探讨Spring AOP的基本概念、工作原理以及如何通过实际示例来理解和应用。 1. **AOP基本概念** - 面向切面编程(AOP)是面向对象编程(OOP)的补充,它允许...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从核心业务逻辑中分离出来,比如日志记录、事务管理、权限控制等。本实例将深入探讨如何在Spring 4.0版本中实现AOP。 首先,AOP的...
本实例主要探讨如何在Spring AOP中实现拦截器。 首先,我们来理解Spring AOP的基本概念。AOP的核心是代理,Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理基于接口,当目标对象实现了接口时使用;...
此外,Spring AOP允许我们在不修改源代码的情况下,对程序进行横向关注点的处理,如日志记录、权限检查和事务管理。在这个用户注册实例中,Spring AOP可能被用来实现诸如用户输入验证、操作日志记录等功能。 Spring...
在这个整合实例中,Spring Security可能会配置用户登录、权限控制和URL访问过滤,以确保只有授权的用户能访问特定资源。 4. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的...
**Spring AOP学习实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP允许开发者定义“切面”...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义“切面”,这些切面封装了应用程序中的交叉关注点,如日志、事务管理、权限检查等。Spring AOP是基于代理的,它可以为普通Java对象(POJOs)...
Spring AOP,全称为Aspect Oriented Programming,是Spring框架中的一个重要模块,主要负责处理系统中的...文件"5.SpringAOP_01"和"6.SpringAOP_02"很可能是课程的分阶段内容,涵盖了从基础概念到进阶实践的详细讲解。
在Web项目中,Spring AOP通常用于处理跨多个控制器和业务层方法的通用任务,如记录请求日志、验证权限、事务管理等。通过配置或注解,你可以确保这些逻辑在每次相关方法执行时自动触发,从而提高代码的可读性和可...
8. **AOP应用场景**:Spring AOP广泛应用于日志记录、事务管理、权限控制、缓存管理等场景。通过切面可以将这些通用功能与业务逻辑解耦,提高代码的可维护性和可重用性。 总之,Spring AOP的默认代理方式是动态代理...
在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...
Spring AOP(面向切面编程)则是一种流行的应用框架,它利用动态代理来实现对业务代码的切面增强,如日志、事务管理等。现在让我们深入探讨JDK动态代理和Spring AOP的原理。 首先,JDK动态代理基于Java的反射机制,...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理、权限检查等。Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇...
在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...