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


目录
相关文章
|
6月前
|
Java 编译器 程序员
重写、抽象类、接口
Java编程涉及重载、重写、final、super、抽象类、static和接口。方法重载允许同名方法,但参数列表需不同;方法重写在子类中重新定义父类方法,保持相同签名。final修饰的类不可继承,final方法不可重写。抽象类包含抽象方法,不能实例化,子类必须重写抽象方法。static修饰静态属性和方法,与对象无关。接口是抽象类的极致形式,包含常量和抽象方法,实现接口需重写方法。Java中,接口可多继承,而类单继承。
39 0
|
6月前
实现类
使用使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2,一个类只能继承一个,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {} 3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。 4、如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。 5如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进 行覆善重写。 6.一个类如果直接父类当中的方法,和接口当中的
22 0
|
6月前
深入类的方法
深入类的方法
|
Java
方法的重写
方法的重写
58 0
从工厂方法到注解的小例子
这里的前几个过程就不符代码了,请读者自行补充;只附上第四版,通过注解替换工厂方法实现自动化的小例子
|
开发者 Python
子类重写父类方法|学习笔记
快速学习子类重写父类方法,先来介绍子类重写父类方法。多态其实就是一种子类重写父类的方法。
|
开发者 Python
方法的重写|学习笔记
快速学习 方法的重写
|
Python
8.4 类的重写
子类除了继承父类的所有属性和方法,还可以自定义自己的属性和方法,增加了代码的复用性 class parent(object):     name='parent'     sex='F'     def __init__(self):         print('my name is {0}'.
645 0