java

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

2023-06-12  本文已影响0人  木巽

早期用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语法糖。

上一篇 下一篇

猜你喜欢

热点阅读