记录一下使用注解实现spring AOP的小例子。
第一步,导入相关的jar包:aspectjweaver-1.6.8.jar(提供注解
org.aspectj.lang.annotation.Aspect等)、spring-aop-3.0.4.RELEASE.jar(提供自动代理
创建器
org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator)、
aopalliance-1.0.jar(提供拦截器功能)。
第二步,配置applicationContext.xml
-
<?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:jee="http://www.springframework.org/schema/jee"
xmlns:tx=
"http://www.springframework.org/schema/tx"
-
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop=
"http://www.springframework.org/schema/aop"
-
xsi:schemaLocation="http:
-
http:
-
http:
-
http:
-
http:
-
<!--其他配置在此省略...-->
-
<!--配置aop自动创建代理-->
-
<aop:aspectj-autoproxy/>
-
<bean id="userManager"
class
=
"com.service.Impl.UserManagerImpl"
></bean>
-
<bean class
=
"com.util.SecurityHandler"
></bean>
-
</beans>
其中相关AOP的配置包括:
1、xmlns:aop="http://www.springframework.org/schema/aop
"
2、
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
其中XSD的版本可以在spring-aop.jar中查看
3、<aop:aspectj-autoproxy/>
4、<bean class="com.util.SecurityHandler"></bean>在spring容器中添加切面类bean
含有连接点的类UserManager
-
package
com.service;
-
-
import
com.entity.User;
-
-
public
interface
UserManager {
-
public
void
add(User user);
-
}
-
-
package
com.service.Impl;
-
-
import
org.apache.commons.logging.Log;
-
import
org.apache.commons.logging.LogFactory;
-
-
import
com.entity.User;
-
import
com.service.UserManager;
-
-
public
class
UserManagerImpl
implements
UserManager {
-
private
Log log = LogFactory.getLog(UserManagerImpl.
class
);
-
-
public
void
add(User user) {
-
log.debug("add User:"
+ user.getUsername());
-
}
-
}
切面实现类SecurityHandler.java
-
package
com.util;
-
-
import
org.aspectj.lang.annotation.After;
-
import
org.aspectj.lang.annotation.Aspect;
-
import
org.aspectj.lang.annotation.Before;
-
-
@Aspect
-
public
class
SecurityHandler {
-
-
@Before
(
"execution(* add*(..))"
)
-
private
void
checkSecurity() {
-
System.out.println("添加前检查通过"
);
-
}
-
-
-
@After
(
"execution(* add*(..))"
)
-
private
void
checkResult() {
-
System.out.println("添加后检查通过"
);
-
}}
测试方法:
-
public
static
void
main(String[] args) {
-
ApplicationContext context = new
ClassPathXmlApplicationContext(
"applicationContext.xml"
);
-
UserManager userManager = (UserManager) context.getBean("userManager"
);
-
-
User user = new
User();
-
user.setUsername("aaa"
);
-
user.setPassword("bbb"
);
-
-
userManager.add(user);
-
}
执行结果如下:
添加前检查通过
2011-03-11 16:13:21,562 [main] DEBUG [com.service.Impl.UserManagerImpl] - add User:aaa
添加后检查通过
总结:在搭建示例过程中遇到
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException异常,
提示无法获取spring-aop-3.0.xsd文件,后来发现是缺少spring-aop-3.0.4.RELEASE.jar,因为spring-
aop-3.0.xsd在它里面。
来自:http://blog.csdn.net/cuihaiyang/article/details/6240413
分享到:
相关推荐
本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring AOP基础 Spring AOP是Spring框架的一部分,它提供了一种在运行时织入横切关注点(如日志、事务管理等)到目标对象的能力。AOP...
在本资料"Spring_Annotation_AOP"中,我们将深入探讨Spring框架如何利用注解实现AOP,以及其背后的原理和实践应用。 面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和可重用性,通过将关注点分离,...
本示例将简要介绍如何在Spring应用中实现AOP,通过实际的代码示例帮助理解其工作原理。 首先,我们要理解AOP的核心概念。AOP是一种编程范式,它允许开发者定义“切面”(Aspects),这些切面封装了特定的关注点,如...
Spring AOP是在Spring框架的基础上实现的一种面向方面编程机制。 1. **方面(Aspect)**:这是AOP的核心概念之一,指代一个关注点的模块化,该关注点可能会横切多个对象。例如事务管理就是一个典型的横切关注点,...
2. **Spring AOP实现方式** - **代理模式**:Spring AOP使用两种代理方式,JDK动态代理和CGLIB代理。如果目标类实现了接口,Spring会使用JDK动态代理;如果没有实现接口,Spring会使用CGLIB代理生成子类。 - **JDK...
对于源码学习,可以查看Spring AOP的实现,尤其是`org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator`和`org.springframework.aop.aspectj.AspectJExpressionPointcut`这两个类,...
NULL 博文链接:https://tianhei.iteye.com/blog/978969
总结一下,通过上述步骤,我们已经在Spring Boot应用中利用Spring AOP和注解方式实现了数据脱敏。这个拦截器可以在不修改原有业务代码的情况下,确保敏感信息在响应给客户端之前得到处理,提高了应用的安全性。同时...
Spring mvc Aop+annotation实现系统日志记录功能实现的jar包asm-3.3.jar ,aspectjrt.jar , aspectjweaver.jar , cglib-nodep-2.1_3.jar , spring-aop.jar
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
总结,这个"SpringAOP简单项目实现"涵盖了Spring AOP的基础知识,包括切面、通知、切入点的定义与配置,以及如何在实际项目中使用Maven进行构建和依赖管理。对于初学者来说,这是一个很好的实践案例,能够帮助他们...
SpringBoot结合AspectJ实现SpringAOP拦截指定方法的知识点涵盖了多个方面,这包括Spring AOP的基本概念、SpringBoot的应用、切点(Pointcut)与通知(Advice)的定义、自定义注解以及AspectJ的使用。以下是这些知识...
**Spring AOP实现方式** 1. **注解驱动(Annotation-based)**:使用`@Aspect`注解定义切面,`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing`, `@Around`定义通知,`@Pointcut`定义切入点表达式。 2. *...
Spring AOP,全称为Aspect Oriented Programming,是Spring框架中的一个重要模块,主要负责处理系统中的...文件"5.SpringAOP_01"和"6.SpringAOP_02"很可能是课程的分阶段内容,涵盖了从基础概念到进阶实践的详细讲解。
本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...
在本示例中,我们将深入探讨如何利用Spring AOP实现简单的权限验证。 首先,AOP的核心概念是切面(Aspect),它封装了横切关注点,比如日志、事务管理、权限验证等。在Spring AOP中,切面通过通知(Advice)来定义...
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...
Spring AOP主要通过两种方式实现:XML配置和注解。本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时...
基于Annotation的AOP实现是Spring框架的一个重要特性,它极大地简化了AOP的使用。在本篇文章中,我们将深入探讨基于Annotation的AOP实现,特别是动态代理的理念。 首先,了解什么是AOP。AOP的核心概念是“切面”...
这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...