1.基于@AspectJ
(1)导入相应的包:aspectjweaver-1.6.10.jar
和使用Pointcut和Advice接口描述切点和增强不同,@AspectJ采用注解的方式来描述切点和增强
首先定义一个javabean
@Aspect //定义切面
public class LogginInterceptor {
private static Logger log = Logger.getLogger(LogginInterceptor.class);
@Before(value="execution(* com.suning.bi.mybatis.service..*(..))")// 定义增强和切入点
public void printAction(JoinPoint joinPoint){// 定义增强处理逻辑
log.info("getTarget:"+joinPoint.getTarget()+";"+"getAgrs:"+joinPoint.getArgs()+";"+"getSignture:"+joinPoint.getSignature()+";"+"方法执行");
}
}
(2)在spring配置文件中完成切面织入
<!-- 使用aspectJ方式 -->
<bean id="loggingInterceptor" class="com.suning.bi.springMVC.interceptor.LogginInterceptor"></bean>
<aop:aspectj-autoproxy/>
2.使用aop:advisor的方式(1)定义一个javabean
public class ExecuteOver implements AfterReturningAdvice{
private static Logger log = Logger.getLogger(ExecuteOver.class);
/* (non-Javadoc)
* @see org.springframework.aop.AfterReturningAdvice#afterReturning(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.lang.Object)
*/
@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
// TODO Auto-generated method stub
log.info(arg1.getName()+"执行完毕");
}
}
(2)在spring配置文件中配置
<!-- 使用 advisor的方式 -->
<bean id="executeOver" class="com.suning.bi.springMVC.interceptor.ExecuteOver"></bean>
<aop:config proxy-target-class="false">
<aop:pointcut id="afterPointcut" expression="execution(* com.suning.bi.mybatis.service..*(..))"/>
<aop:advisor advice-ref="executeOver" pointcut-ref="afterPointcut" />
</aop:config>
3.使用<aop:aspect>方式(1)配置javabean
public class AroundMethod {
private static Logger log = Logger.getLogger(AroundMethod.class);
public void around(ProceedingJoinPoint joinPoint) throws Throwable{
log.info(joinPoint.getSignature().getName()+"经过环绕增强开始执行");
joinPoint.proceed();
log.info(joinPoint.getSignature().getName()+"经过环绕增强执行结束");
}
}
(2)在spring配置文件中配置aspect
<!-- 使用<aop:aspect>方式 -->
<bean id="aroundMethod" class="com.suning.bi.springMVC.interceptor.AroundMethod"></bean>
<aop:config proxy-target-class="false">
<aop:aspect ref="aroundMethod">
<aop:pointcut id="aroundPointcut" expression="execution(* com.suning.bi.springMVC..*(..))"/>
<aop:around pointcut-ref="aroundPointcut" method="around"/>
</aop:aspect>
</aop:config>/code]
[b]4.使用接口的方式,我没有使用过,自己可以去看对应的API。[/b]
[b]5.可以使用Interceptor实现代理[/b]
<bean id="autoproxy"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 可以是Service或DAO层(最好是针对业务层*Service) -->
<property name="beanNames">
<list>
<!-- 必要的时候可以注入具体的service,如UserService -->
<value>*Service</value>
</list>
</property>
<property name="interceptorNames">
<list>
<!-- 在这里放入自己编写的Interceptor -->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
我们在日常的使用中可以根据自己的需要选择具体使用那种方式,但是在一个项目中不建议使用过多的技术种类去同一种需求。
分享到:
相关推荐
**Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...
Spring AOP 使用教程 Spring AOP(Aspect-Oriented Programming)是一种编程技术,能够帮助开发者在软件系统中实现一些通用的功能,如日志记录、安全检查、事务管理等。下面是关于 Spring AOP 使用教程的详细知识...
JavaEE Spring AOP(面向切面编程)是企业级应用开发中的重要技术,它允许...无论是通过注解还是XML配置,掌握Spring AOP的使用都能显著提升我们的开发效率。在实践中,可以根据项目的具体需求选择最适合的实现方式。
接下来,我们使用Spring AOP来实现数据过滤。这通常涉及以下步骤: 1. **定义切点(Pointcut)**:确定哪些方法需要进行权限检查。这可以通过注解或XML配置来实现,例如定义一个名为`@DataAccess`的注解,并将其...
在Spring Boot项目中,配置和使用AOP相对简单。首先,我们需要引入Spring AOP和AspectJ的依赖,这通常在pom.xml或build.gradle文件中完成。然后,我们可以定义一个切面(Aspect),它包含通知(Advice)——即在特定...
在提供的 `lib` 压缩包中,应包含 Spring AOP 和 Spring IOC 相关的 jar 包,如 `spring-aop-x.x.x.jar` 和 `spring-context-x.x.x.jar` 等,它们是使用这两个功能的基础。请确保引入正确的版本,并正确配置到项目的...
在项目中,我们通常会将这个jar包引入到类路径下,以便使用Spring AOP的功能。 总的来说,Spring AOP通过提供面向切面的编程能力,极大地提高了代码的可复用性和可维护性,降低了系统复杂度,特别是在处理共性问题...
在这个过程中,Spring AOP 使用 configBeanDefinitionParser 来解析 AOP 配置文件,并生成相应的 Bean 定义对象。 3. 注册 AutoProxyCreator:在解析 AOP 配置文件时,Spring AOP 也会注册一个 ...
4. **代理模式的创建**:Spring AOP 使用`org.springframework.aop.framework.ProxyFactoryBean`或`@EnableAspectJAutoProxy`注解来配置代理。`ProxyFactoryBean`是XML配置方式,而`@EnableAspectJAutoProxy`是基于...
Spring AOP,全称为Aspect Oriented Programming,是面向切面编程的一种编程范式,它是对传统的面向对象编程(OOP)的一种补充。在OOP中,核心是对象,而在AOP中,核心则是切面。切面是关注点的模块化,即程序中的...
Spring AOP使用一个名为`@Pointcut`的注解来声明切入点,并通过`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing` 和 `@Around` 注解与通知关联。 3. **织入(Weaving)**:织入是将切面应用到目标对象以...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
本笔记主要探讨了如何在Spring应用中使用AOP来实现横切关注点,如日志、事务管理、性能监控等。 首先,理解AOP的基本概念至关重要。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或责任。切面由两个主要...
一、适合人群 1、具备一定Java编程基础,初级开发者 2、对springboot,mybatis,mysql有基本认识 3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 ...4、spring boot,mybatis,druid,spring aop的使用
在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型、组装切面以及使用JUnit4进行测试。 首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处...
Spring AOP使用两种主要的代理技术:JDK动态代理和CGLIB动态代理。JDK动态代理适用于接口的场景,而CGLIB则用于没有实现接口的情况。在这两种情况下,代理对象都会持有目标对象的引用,并在其上调用方法。具体来说:...
3. **切入点表达式**:Spring AOP使用一种基于正则表达式的语言来定义切入点,用于匹配连接点。例如,`execution(* com.example.service.*.*(..))`匹配com.example.service包下的所有类的所有方法。 4. **Spring ...
现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...