`
xuyelongjava
  • 浏览: 38512 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

在Spring中使用replaced-method来进行方法替换

阅读更多
 我们知道,通过使用Spring的AOP,可以非常容易的增强类中一些方法的功能,或者是替换掉一个方法。这里简单介绍一种不使用Spring AOP,而是Spring IOC中内置的一种方法替换功能。即<bean>标签中<replaced-method>元素的应用。

  在Spring的配置文件中,在配置一个Bean的时候,可以使用该元素(标签)用来设置方法替换。 <replaced-method>标签的name属性用来指定要替换的方法名称,replacer属性用来指定用来替换的Bean,这个Bean要求实现Spring的MethodReplacer接口。该标签下面的arg-type元素用来指定0个或多个方法参数。下面我们看一个简单的例子:
public class LookupMethodBean {
public void test()
{
  System.out.println("原始方法!");
}
}

MethodReplace.java
import java.lang.reflect.Method;
import org.springframework.beans.factory.support.MethodReplacer;
public class MethodReplace implements MethodReplacer {
public Object reimplement(Object obj, Method method, Object[] args)
   throws Throwable {
    System.out.println("方法已经被替换!");
  return null;
}
}

Spring配置文件部分内容
<bean name="replacer" class="springroad.deomo.chap4.MethodReplace">
</bean>
<bean name="testBean" class="springroad.deomo.chap4.LookupMethodBean">
  <replaced-method name="test" replacer="replacer"> </replaced-method> 
</bean>
 
  这样,testBean的test方法被替换,在调用testBean的test方法时,将执行replcacer这个Bean中的reimplement方法。
分享到:
评论

相关推荐

    spring-beans-3.0.xsd

    在`&lt;bean&gt;`元素中,`lookup-method`和`replaced-method`属性的引入,使得在运行时动态查找或替换bean的方法成为可能,这是对AOP(面向切面编程)的一种补充,提供了更细粒度的控制。 除此之外,`&lt;util&gt;`命名空间在...

    JSP开发之Spring方法注入之替换方法实现

    在Spring中,实现方法替换的关键是通过MethodReplacer接口。 MethodReplacer接口定义了reimplement()方法,这个方法接收三个参数:obj、method和args。obj指的是需要被替换方法实现的Bean实例;method是需要被替换...

    JAVA spring 系列案例50个和学习资料

    Spring系列第12篇:lazy-init:bean延迟初始化Spring系列第13篇:使用继承简化bean配置(abstract & parent)Spring系列第14篇:lookup-method和replaced-method比较陌生,怎么玩的?Spring系列第15篇:代理详解(Java...

    Spring源码总结.pdf

    在解析`bean`时,会创建`GenericBeanDefinition`对象,设置属性,处理元数据、lookup-method、replaced-method、构造参数、属性、qualifier等。 4. **自定义标签解析**: - 自定义标签解析涉及到Spring的命名空间...

    servlet2.4doc

    The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object. addCookie(Cookie) - Method in interface javax.servlet.http.HttpServletResponse Adds the ...

    Spring中xml的配置[定义].pdf

    除了这些核心概念,Spring的XML配置还包括其他元素,如`&lt;import&gt;`引入其他配置文件,`&lt;alias&gt;`为bean定义别名,以及`&lt;lookup-method&gt;`和`&lt;replaced-method&gt;`来处理方法的动态代理等。XML配置提供了一种声明式的方式...

    spring学习笔记(有代码有注解解释)

    - **Spring的依赖**:可以使用`lookup-method`和`replaced-method`对方法进行替换或动态查找。 - **Spring的p命名空间**:提供了一种更简洁的方式来配置bean属性。例如: ```xml 张三" p:age="22"/&gt; ``` - **...

    Spring的IoC容器(PDF)

    - 替换机制:通过`replaced-by`属性实现bean的替换,提供灵活的配置选择。 - **容器背后的秘密**: - “战略性观望”:BeanFactory在初始化过程中会延迟bean的创建,直到首次请求时才实例化。 - 插手“容器的启动...

    gulp-html-replace:替换HTML中的构建块。 像useref一样,但是做对了

    gulp-html-replace 替换HTML中的构建块。 像useref一样,但是做对了。目录用法安装: npm install --save-dev gulp-html-replace 在您HTML文件中放置一些块: &lt;!-- build:&lt;name&gt; --&gt;Everything here will be ...

    Python-FlashText该模块可用于替换句子中的关键字或从句子中提取关键字

    Python中的FlashText模块是一个高效的文本处理工具,特别适用于在大量文本数据中查找和替换关键词。它的设计灵感来自于Facebook的Faster R-CNN论文中的FastText算法,但FlashText的实现更为简单,且针对特定任务进行...

    C#222查找和替换

    在C#中,我们可以使用`String`类提供的方法来查找子字符串。主要有以下几种方式: 1. `IndexOf()`:这个方法返回指定子字符串在原字符串中首次出现的索引,如果找不到则返回-1。 示例: ```csharp string text =...

    根据指定字符替换文件中的字符并导出

    这个场景涉及到的是使用Python语言来实现一个功能,即“根据指定字符替换文件中的字符并导出”。这个任务可以分为几个关键步骤,我们将逐一详细解释。 首先,我们需要理解Python的基础语法和文件操作。在Python中,...

    powerbuilder 批量替换函数

    1. **定位目标子字符串**:使用 `Pos()` 函数来查找 `Stringls_replacereadonly` 在 `Stringls_oldvalue` 中首次出现的位置。如果找到,则 `li_find` 的值为子字符串的起始位置;如果没有找到,则 `li_find` 的值为 ...

    c#批量替换某一类字符串

    `Regex.Replace`方法允许我们使用正则表达式来匹配要替换的模式,并提供一个回调函数来生成替换后的字符串。例如,如果我们想替换所有的数字为"X": ```csharp string text = "The number is 123."; string pattern...

    C#实现 查找与替换

    在C#中,`string`类提供了多种方法来执行查找操作。例如,`IndexOf()`方法用于查找指定字符或子字符串首次出现的位置,返回值是索引位置,如果找不到则返回-1。例如: ```csharp string text = "Hello, World!"; ...

    PHP图片颜色替换

    在实际应用中,你可能需要根据具体需求调整代码,比如添加容差值以匹配近似颜色,或者使用更复杂的算法来提高替换效果。同时,如果你处理的图片数量很大,记得考虑性能优化,如批量处理和使用缓存。 这个`demo.php`...

    unigui0.83.5.820

    0.83.5.820 +---------------------------------------------------------------------------------------- - 0000796: DBGrid: Render bug when Column color is clWindow and project is created with 0.82 ...

    eclipse中安装配置maven、gradle以及springboot

    以上步骤详细介绍了如何在Eclipse中安装配置Maven、Gradle以及SpringBoot,特别是如何使用阿里云的镜像来加速依赖库的下载。这些工具和框架的配置对于Java开发者来说至关重要,能够显著提升开发效率和项目构建的速度...

    fortran分割字符串和字符串替换的子程序_Fortran_

    本篇将详细介绍如何在Fortran中进行字符串的分割与替换,以帮助你更好地理解和应用这些技术。 1. **字符串分割**: 在Fortran中,没有内置的字符串分割函数,但我们可以自定义一个子程序来实现这个功能。通常,...

Global site tag (gtag.js) - Google Analytics