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


目录
相关文章
|
4月前
|
Java
java反射-获取类的属性、构造方法、方法
java反射-获取类的属性、构造方法、方法
|
5月前
调用反射类的方法
调用反射类的方法
|
5月前
调用反射类的指定方法
调用反射类的指定方法
|
12月前
|
设计模式 Java 数据库
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
|
5月前
深入类的方法
深入类的方法
|
5月前
|
C++
c++将一个类的回调函数注入到另一个类中的方法
c++将一个类的回调函数注入到另一个类中的方法
|
Java
方法的重写
方法的重写
54 0
|
缓存 Java 开发者
Spring源码(八)-构造方法实例化Bean-createBeanInstance
各位小伙伴好,这是 Spring 源码系列的第八篇文章。本篇篇幅较长(五千八百字),建议收藏慢慢品尝。
645 1
|
Python
8.4 类的重写
子类除了继承父类的所有属性和方法,还可以自定义自己的属性和方法,增加了代码的复用性 class parent(object):     name='parent'     sex='F'     def __init__(self):         print('my name is {0}'.
642 0