首页 > 其他分享 >【Spring】- 任意方法替换

【Spring】- 任意方法替换

时间:2024-01-31 19:01:08浏览次数:20  
标签:... 方法 String Spring Object 替换 input 任意 public

【任意方法替换】

方法注入的一种不太有用的形式是能够用另一种方法实现替换托管 bean 中的任意方法

实现org.springframework.beans.factory.support.MethodReplacer接口的类提供了新的方法定义

public class MyValueCalculator {

    public String computeValue(String input) {
        // some real code...
    }

    // some other methods...
}

public class ReplacementComputeValue implements MethodReplacer {

    public Object reimplement(Object o, Method m, Object[] args) throws Throwable {
        // get the input value, work with it, and return a computed result
        String input = (String) args[0];
        ...
        return ...;
    }
}


<bean id="myValueCalculator" class="x.y.z.MyValueCalculator">
    <!-- arbitrary method replacement -->
    <replaced-method name="computeValue" replacer="replacementComputeValue">
        <arg-type>String</arg-type>
    </replaced-method>
</bean>

<bean id="replacementComputeValue" class="a.b.c.ReplacementComputeValue"/>


标签:...,方法,String,Spring,Object,替换,input,任意,public
From: https://blog.51cto.com/u_11209802/9514349

相关文章

  • Java调用ChatGPT(基于SpringBoot和Vue)实现连续对话、流式输出和自定义baseUrl
     源码及更详细的介绍说明参见Git上的README.md文档https://github.com/asleepyfish/chatgpt本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:https://github.com/asleepyfish/chatgpt-demo流式输出结合Vue前端的Demo的Git地址:https://github.com/asleepyfish/chatg......
  • SpringMVC拦截器的使用
    SpringMVC中的拦截器主要用于拦截控制器方法的执行。SpringMVC配置拦截器SpringMVC中的拦截器需要实现HandlerInterceptor接口publicclassFirstInterceptorimplementsHandlerInterceptor{//该方法是在控制器方法执行前执行@OverridepublicbooleanpreHandl......
  • SpringBoot中两种常用定位切点的方法
    有时候,我们使用AOP来进行放的增强,编写切面类的时候,需要定位在哪个方法上试用该切面进行增强,本文主要讲解两种在SpringBoot中定位切点的方法,一种是使用execution表达式的方法,一种则是利用自定义注解的方法。execution表达式execution表达式的方式主要是在定义切点的时候,通过表达......
  • SpringBoot介绍
    SpringBoot一、介绍我们在搭建传统SSM项目时,通常需要导入很多依赖,但每种依赖又有许多版本,这就很容易出现依赖冲突。此外,繁琐的配置也是一大痛点,太多了,让人很难记住,因此SpringBoot诞生了。SpringBoot是对Spring的深度封装,基于约定优于配置的思想,提供了大量的默认配置和实现。......
  • 基于springboot开发的工作流系统,bpmn.js,vue源码及功能分析(activiti)
    前言activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作......
  • Spring事务的传播行为
    Spring事务的传播行为1.概述当我们遇到下面的情况时,一个service中调用了另一个service中的方法(两个service中都存在事务),此时bservice中的事务就被传播到了aservice中,这样就产生了事务的传播。@SercicepublicclassAservice{@AutoWiredprivateBservicebservice......
  • handler机制探究——Spring MVC的Handler
    Handler机制主要涉及以下几个方面:Handler类:它是用于处理消息的对象,通常用来在不同的线程之间传递消息。Message类:这是消息对象,包含了有关消息的数据以及目标处理器的引用。MessageQueue类:这是一个存储消息的对象,按照一定的顺序排列。Looper类:它的内部是一个死循环,不断地从Me......
  • SpringBoot 整合多数据源的事务问题
    代码先贴代码:核心就是:Spring给我们提供的一个类AbstractRoutingDataSource,然后我们再写一个切面来切换数据源,肯定要有一个地方存储key还要保证上下文都可用,所以我们使用ThreadLocal来存储数据源的keypom.xml<dependency><groupId>org.springframework.boot</gr......
  • 对比Spring Boot中的JdbcClient与JdbcTemplate
    本文我们一起看看SpringBoot中JdbcClient和JdbcTemplate之间的差异。以下内容使用的Java和SpringBoot版本为:Java21SpringBoot3.2.1假设我们有一个ICustomerService接口:publicinterfaceICustomerService{List<Customer>getAllCustomer();Option......
  • createDelegatingPasswordEncoder只有在spring 5.1.13才能用吗?
    springboot和spring版本对应关系:SpringBoot1.x支持SpringFramework4.x系列,包括4.0、4.1、4.2和4.3等版本。SpringBoot2.x支持SpringFramework5.x系列,包括5.0、5.1和5.2等版本。 下载springboot会一并下载 ......