通过实现BeanFactoryPostProcessor,重写产品中的方法。

简介: 通过实现BeanFactoryPostProcessor,重写产品中的方法。

 背景:项目上要基于产品的功能进行一些定制化的开发,对一些功能的操作添加上项目上独特的业务逻辑,这就涉及到了

要对产品的接口进行重写。以下为实现BeanFactoryPostProcessor,对ioc容器中的beanDefinition进行修改,已达到项目上能够重写产品自带的一些类的方法的目的。

实现步骤:

1.定义自己的业务逻辑类,可以继承自产品的相应业务逻辑类。

public class RoleResourceServiceImpl extends RoleResourceService {
    @Override
    public void updateResource(String roleId, String systemId, String[] resIds) {
    // 调用父类即产品的方法
        super.updateResource(roleId, systemId, resIds);
        // 增加项目上的业务逻辑     
    }
}

image.gif

2. 实现BeanFactoryPostProcessor类,重写postProcessBeanFactory方法。

@Component
public class UpdateBeanDefinitionPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
        try {       
            //让ioc容器将原来的roleResourceService注册为RoleResourceServiceImpl的实现
            GenericBeanDefinition roleResourceServiceBdf = (GenericBeanDefinition) beanFactory.getBeanDefinition("roleResourceService");
            roleResourceServiceBdf.setBeanClass(RoleResourceServiceImpl.class);
        } catch (NoSuchBeanDefinitionException e) {
            //
        }
    }
}

image.gif


目录
相关文章
|
消息中间件 存储 负载均衡
【Kafka】Kafka 分区
【4月更文挑战第5天】【Kafka】Kafka 分区
|
负载均衡
《从零开始手写RPC框架》电子书升级啦!
大家好,我是冰河~~ 今天跟大家正式宣布一个好消息,冰河的《从零开始手写RPC框架(基础篇)》电子书,升级啦! 这本电子书中包含哪些内容呢?小伙伴们可以直接拉到文末查看获取方式,也可以先听冰河吹一吹这本电子书的内容。
627 0
《从零开始手写RPC框架》电子书升级啦!
|
SQL 存储 缓存
浅析MySQL中的SQL执行过程
本文探讨了MySQL的体系结构、SQL执行流程及SQL执行时间分析方法。首先介绍了MySQL由连接层、SQL层和存储引擎层构成;接着详细描述了SQL从客户端发送到服务器执行的具体流程;最后,通过启用profiling功能,展示了如何分析SQL执行时间,并说明了MySQL 8.0版本后移除查询缓存的原因。
446 3
浅析MySQL中的SQL执行过程
|
XML Java 数据库
在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂
【9月更文挑战第8天】在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂。日志作为系统行为的第一手资料,传统记录方式因缺乏全局视角而难以满足跨服务追踪需求。本文通过一个电商系统的案例,介绍如何在Spring Boot应用中手动实现日志链路追踪,提升调试效率。我们生成并传递唯一追踪ID,确保日志记录包含该ID,即使日志分散也能串联。示例代码展示了使用过滤器设置追踪ID,并在日志记录及配置中自动包含该ID。这种方法不仅简化了问题定位,还具有良好的扩展性,适用于各种基于Spring Boot的微服务架构。
161 3
|
消息中间件 Dubbo 应用服务中间件
微服务调用中TraceId是如何传递的?
由于网络原因,我暂时无法解析提供的网页链接。请检查链接是否有效,或稍后再试。如果您有其他问题或需要帮助,请随时告诉我。
微服务调用中TraceId是如何传递的?
|
消息中间件 监控 负载均衡
Kafka中的Partition详解与示例代码
在Apache Kafka中,Partition(分区)是一个关键的概念。分区的引入使得Kafka能够处理大规模数据,并提供高性能和可伸缩性。本文将深入探讨Kafka中的Partition,包括分区的作用、创建、配置以及一些实际应用中的示例代码。
|
测试技术 定位技术 API
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
95827 140
|
消息中间件 存储 大数据
聊一聊几款主流消息队列之间的差异,我们应该如何选择
聊一聊几款主流消息队列之间的差异,我们应该如何选择
818 2
|
网络协议 Java
在Java中使用TCP协议搭建一个简单的客户端
如何在Java中使用TCP协议搭建一个简单的客户端
506 2
|
设计模式 Go
Go语言事件系统设计解析:发布-订阅模式实战
Go语言事件系统设计解析:发布-订阅模式实战
825 0

热门文章

最新文章