`
jiaguwen123
  • 浏览: 413348 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

AOP的MethodBeforeAdvice

阅读更多
使用Spring自动生成代理类,spring利用的是动态代理机制
接口

Java代码
public interface UserDao {
void addUser();
void deleteUser();
}
两个实现:

Java代码
public class UserDaoMySqlImpl implements UserDao {  
 
@Override 
public void addUser() {  
  System.out.println("UserDaoMySqlImpl.addUser()");  
}  
 
@Override 
public void deleteUser() {  
  System.out.println("UserDaoMySqlImpl.deleteUser()");  
 
}  
 
}  



public class UserDaoOracleImpl implements UserDao {

@Override
public void addUser() {
  System.out.println("UserDaoOracleImpl.addUser()");
}

@Override
public void deleteUser() {
  System.out.println("UserDaoOracleImpl.deleteUser()");
}

}
Device
import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class UserDaoBeforeAdvice implements MethodBeforeAdvice {

@Override
public void before(Method arg0, Object[] arg1, Object arg2)
   throws Throwable {
  System.out.println("UserDaoBeforeAdvice.before()");
}

}

spring的配置文件

Xml代码
<!-- 配置实现类的bean,可以把所有的实现类都写上 --> 
<bean id="userdao" class="com.dowebber.spring.aop.UserDaoMySqlImpl"></bean> 
<!--配置Advice的bean --> 
<bean id="beforeadvice" class="com.dowebber.spring.aop.UserDaoBeforeAdvice"></bean> 
<!--配置spring自动生成代理对象所需要的一些参数 --> 
<bean id="userdaoproxy" class="org.springframework.aop.framework.ProxyFactoryBean"> 
<property name="proxyInterfaces" value="com.dowebber.spring.aop.UserDao"/> 
<property name="target"> 
  <ref bean="userdao"/> 
</property> 
<property name="interceptorNames"> 
  <list> 
   <value>beforeadvice</value> 
  </list> 
</property> 
</bean> 


测试类:

Java代码
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
 
public class TestUserDaoBeforeDevice {  
 
public static void main(String[] args) {  
    
  ApplicationContext context = new ClassPathXmlApplicationContext("com/dowebber/spring/aop/spring.xml");  
  UserDao dao = (UserDao)context.getBean("userdaoproxy");  
  dao.addUser();  
}  
 

分享到:
评论

相关推荐

    spring_AOP的MethodBeforeAdvice详解

    Spring AOP中的MethodBeforeAdvice是Spring框架提供的面向切面编程(AOP)的重要组成部分,用于在目标对象的方法执行之前执行一段代码。在AOP中,可以通过定义所谓的“advice”来插入横切关注点(cross-cutting ...

    spring-aop-jar

    该jar文件包含了Spring AOP的核心类和接口,如`org.springframework.aop.*`包下的`AspectJExpressionPointcut`、`MethodBeforeAdvice`、`AfterReturningAdvice`等。 3. spring-aspects-4.1.6.RELEASE.jar:这个jar...

    spring-aop源码

    这些通知通过`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`等接口实现。 三、连接点(Join Point) 连接点是程序执行中的一个特定点,例如方法的调用。在Spring ...

    使用Spring配置文件实现AOP

    3. 配置通知:通知是实际执行的操作,可以是Spring的`MethodBeforeAdvice`、`AfterReturningAdvice`等接口的实现。在配置文件中,我们创建一个bean,实现相应的接口,并设置其属性和方法。 四、实例解析 以下是一个...

    spring aop实现

    本文将深入探讨Spring AOP的实现,包括MethodBeforeAdvice、AfterReturningAdvice以及MethodInterceptor等关键概念。 一、AOP基础知识 AOP的核心思想是横切关注点,即那些与业务逻辑不直接相关的,但需要在多个...

    aopalliance

    在Spring AOP中,如果要实现前置通知,我们需要实现`MethodBeforeAdvice`接口,它继承自`Advice`接口。当配置了此类通知后,Spring会在每次目标方法执行前调用这个通知,从而可以实现如权限检查、日志记录等功能。 ...

    springAOP 4个jar包

    比如,`org.aopalliance.intercept.MethodInterceptor`接口定义了拦截器的接口,Spring AOP的`MethodBeforeAdvice`、`AfterReturningAdvice`等通知类型都实现了这个接口。 了解这些jar包的作用后,我们可以看到...

    Spring  AOP实现方法大全

    你可以通过实现`org.springframework.aop.MethodBeforeAdvice`接口来创建Before Advice。该接口只有一个方法`before()`,它接受三个参数:`Method`对象代表即将执行的方法,`Object[] args`是方法的参数,`Object ...

    五、Spring源码分析——Spring Aop

    `org.aopalliance.intercept.MethodInterceptor`接口定义了拦截器的行为,而`org.springframework.aop.MethodBeforeAdvice`等类则是具体的通知实现。`org.springframework.aop.aspectj.AspectJExpressionPointcut`类...

    spring aop 拦截器简单实现

    它是一个实现了`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`或`org.springframework.aop.ThrowsAdvice`等接口的对象,可以在方法调用前后执行自定义逻辑。...

    Spring之AOP介绍

    ### Spring之AOP介绍 #### 一、AOP概述 面向方面编程(Aspect-Oriented Programming,简称AOP)作为一种编程范式,旨在通过模块化的方式处理横切关注点(Cross-cutting Concerns)。传统的面向对象编程(OOP)虽然...

    用xml配置的方式进行SpringAOP开发

    &lt;bean class="org.springframework.aop.aspectj.MethodBeforeAdvice"&gt; ``` 这里的`loggingAdvisor`定义了一个基于正则表达式的切点,匹配所有以`com.example.*Service.*`开头的方法,并在这些方法调用...

    spring_2.5_aop_lib.zip

    这个库包含了创建代理对象和执行切面逻辑的类,如AspectJExpressionPointcut和MethodBeforeAdvice等,这些都是Spring AOP的基础。 cglib-nodep-2.1_3.jar是代码生成库,当无法使用Java动态代理(例如,目标对象没有...

    spring4 AOP 源代码

    6. **MethodBeforeAdvice**、**AfterReturningAdvice**等:这些是不同类型的通知接口,定义了在方法执行前、后或抛出异常时执行的通知行为。 在源代码中,你可以看到Spring如何通过反射和动态代理来实现AOP的功能。...

    spring入门学习-6、AOP几种配置方式详解.pdf

    - **前置通知**:`org.springframework.aop.MethodBeforeAdvice` 是一个接口,定义了在目标方法执行之前执行的操作。 - **后置通知**:`org.springframework.aop.AfterReturningAdvice` 是一个接口,定义了在目标...

    spring AOP的运用

    例如,对于`@Before`通知,Spring会调用`MethodBeforeAdvice`接口的方法;对于`@Around`通知,Spring会调用`ProceedingJoinPoint`的`proceed()`方法。 3. Spring AOP的代理机制分为JDK动态代理和CGLIB代理。如果目标...

    个人对spring实现AOP的方法总结

    开发者可以通过实现org.springframework.aop.MethodBeforeAdvice接口来实现Before Advice的逻辑。在before方法中,可以取得指定方法的Method实例、参数列表和目标对象,在before方法执行完后,目标对象上的方法将会...

    Flex整合Spring实现aop日志管理

    通知可以自定义一个类,实现`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`或`org.aspectj.lang.ProceedingJoinPoint`接口,分别对应不同的通知类型。 2. **创建...

Global site tag (gtag.js) - Google Analytics