通过实现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


目录
相关文章
|
7月前
|
Java
【反射】Java反射机制 -- 常用构造器与方法
【反射】Java反射机制 -- 常用构造器与方法
65 0
|
6月前
|
Java
java反射-获取类的属性、构造方法、方法
java反射-获取类的属性、构造方法、方法
|
设计模式 Java 数据库
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
|
7月前
深入类的方法
深入类的方法
|
7月前
|
C++
c++将一个类的回调函数注入到另一个类中的方法
c++将一个类的回调函数注入到另一个类中的方法
|
Java
方法的重写
方法的重写
59 0
从工厂方法到注解的小例子
这里的前几个过程就不符代码了,请读者自行补充;只附上第四版,通过注解替换工厂方法实现自动化的小例子
|
缓存 Java 开发者
Spring源码(八)-构造方法实例化Bean-createBeanInstance
各位小伙伴好,这是 Spring 源码系列的第八篇文章。本篇篇幅较长(五千八百字),建议收藏慢慢品尝。
664 1
|
XML 缓存 Java
Spring源码(七)-Supplier、工厂方法实例化Bean-createBeanInstance
上篇讲到程序执行了 resolveBeforeInstantiation 函数之后,如果返回的结果为 null,就需要执行 doCreateBean 函数进行创建 Bean。
784 1