美文网首页
记录一个RestartClassLoader导致的问题

记录一个RestartClassLoader导致的问题

作者: 江左金天氏牧 | 来源:发表于2020-10-11 10:01 被阅读0次

之前有个框架层面的需求是拦截所有的sql进行处理,因为工程里引用了mybatis,jdbc,hibernate,所以直接重写mysql驱动的EscapeProcessor类,这时候遇到了第一个问题,EscapeProcessor初始化在spring bean之前。
经过一番折腾,定义了一个spring boot启动时优先加载的配置,很快解决了第一个问题。

public class ClientBeanProcessor extends InstantiationAwareBeanPostProcessorAdapter implements BeanFactoryAware {
    private ConfigurableListableBeanFactory beanFactory;
    @Override
    public void setBeanFactory(BeanFactory beanFactory) {
        if (!(beanFactory instanceof ConfigurableListableBeanFactory)) {
            throw new IllegalArgumentException(
                    "AutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactory: " + beanFactory);
        }

        this.beanFactory = (ConfigurableListableBeanFactory) beanFactory;
        // 通过主动调用beanFactory#getBean来显示实例化目标bean
        SpringContextKit springContextKit = this.beanFactory.getBean(SpringContextKit.class);
        System.out.println(springContextKit);
    }
}

这时坑出现了,明明优先初始化的ApplicationContext是注入成功的,但是获取bean时一直为null,又经过了一番折腾,发现优先加载的bean和获取的bean不在一个类加载器内,ClientBeanProcessor 加载SpringContextKit到时用的是RestartClassLoader,获取bean使用时用的是AppClassLoader,去掉spring-boot-devtools,问题解决

相关文章

  • 记录一个RestartClassLoader导致的问题

    之前有个框架层面的需求是拦截所有的sql进行处理,因为工程里引用了mybatis,jdbc,hibernate,所...

  • scrollView 嵌套recycleView复用失效的解决办

    记录一个之前遇到的问题:scrollView 嵌套recycleView 导致recycleView 复用失效问题...

  • 记录一个因dns缓存导致的问题

    前言 在开发任务非常紧张的时刻,前一天还好好的能访问git服务器,第二天再次进入后发现如论如何都访问不上,不管是重...

  • CTS问题分析8

    CTS/GTS问题分析8 今天发现一个初始设置错误可能导致的CTS问题,进行下记录 问题初探 测试命令: run ...

  • BLE 开发爬坑

    记录一个ble连接断开连接断开多次会导致写入多次的问题, mBluetoothGatt.close(); //Bl...

  • CALayer renderInContext: Crash

    记录一个问题, CALayer renderInContext: 在 iOS 8 或者 iOS9 上可能会导致崩溃...

  • iOS内存泄漏易错点

    问题 记录一个内存泄漏的案例,闭包引用自己或者多个对象,导致对象无法正常销毁,从而导致内存泄漏。 上面例子的闭包中...

  • iOS中错误:ARC Semantic issue:No vis

    一个xcode 11.2 发现的问题,.h文件中定义的方法删除没用还是会记录,导致程序报错无法运行。 我遇到的问题...

  • 频繁createBitmap导致的OOM问题记录

    最近在做一个相机有关的应用,相机输出的一般来说都是需要旋转才能变为我们看来正向的图像的,这是因为相机传感器的坐标体...

  • MySQL:故障疑问等4例

    简单记录,仅供参考。 一、slow log记录到表导致的故障 5.7.22版本 问题: 大概问题就是,数据库cra...

网友评论

      本文标题:记录一个RestartClassLoader导致的问题

      本文链接:https://www.haomeiwen.com/subject/zkaspktx.html