栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在运行时实例化Spring托管的bean?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在运行时实例化Spring托管的bean?

看起来我找到了解决方案。当我使用基于Java的配置时,它甚至比您想像的还要简单。xml中的替代方法是lookup-method,但是仅从Spring
4.1.X版本开始,因为它支持将参数传递给方法。

这是一个完整的工作示例:

public class Container {    private List<RuntimeBean> runtimeBeans = new ArrayList<RuntimeBean>();    private RuntimeBeanFactory runtimeBeanFactory;    public void load() {        // repeated several times depending on external data/environment        runtimeBeans.add(createRuntimeBean("Some external info1"));        runtimeBeans.add(createRuntimeBean("Some external info2"));    }    public RuntimeBean createRuntimeBean(String info) {         // should create bean which internally can have some          // spring annotations or in other words         // should be managed by spring         return runtimeBeanFactory.createRuntimeBean(info)    }    public void setRuntimeBeanFactory(RuntimeBeanFactory runtimeBeanFactory) {        this.runtimeBeanFactory = runtimeBeanFactory    }}public interface RuntimeBeanFactory {    RuntimeBean createRuntimeBean(String info);}//and finally@Configurationpublic class ApplicationConfiguration {    @Bean    Container container() {        Container container = new Container(beanToInject());        container.setBeanRuntimeFactory(runtimeBeanFactory());        return container;    }    // LOOK HOW IT IS SIMPLE IN THE JAVA ConFIGURATION    @Bean     public BeanRuntimeFactory runtimeBeanFactory() {        return new BeanRuntimeFactory() { public RuntimeBean createRuntimeBean(String beanName) {     return runtimeBean(beanName); }        };    }    @Bean    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)    RuntimeBean runtimeBean(String beanName) {        return new RuntimeBean(beanName);    }}class RuntimeBean {    @Autowired    Container container;}

而已。

感谢大家。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号