手动向Spring容器(BeanFactory)中注册Bean

早期用XML配置Bean,后来用@Bean或@Component注解来注册Bean。但有时动态创建的对象,并不方便用注解来实现。

可以用下面的方法手动注册Bean:

    public static void registerDataSource(Object dataSource, String beanName) {
        var beanFactory = (DefaultListableBeanFactory) SpringUtil.getApplicationContext().getAutowireCapableBeanFactory();
        beanFactory.registerSingleton(beanName, dataSource);
    }

对应的销毁Bean的方法:

    public static void destroyDataSource(String dsId) {
        var beanFactory = SpringUtil.getApplicationContext().getAutowireCapableBeanFactory();
        var ds = getDataSource(dsId);
        beanFactory.destroyBean(ds); //或者用DefaultListableBeanFactory.destroySingleton的方法
    }

上面的代码基于java17,使用了var语法糖。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容