首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用bean定义创建bean而不注册

使用bean定义创建bean而不注册
EN

Stack Overflow用户
提问于 2014-03-27 09:17:13
回答 1查看 652关注 0票数 0

正如您已经知道的,如果我想在spring中动态创建bean,我将使用以下代码:

代码语言:javascript
运行
复制
BeanDefinitionRegistry registry = ((BeanDefinitionRegistry )factory);
GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
beanDefinition.setBeanClass(MyBeanClass.class);
beanDefinition.setAutowireCandidate(true);
registry.registerBeanDefinition("dynamicBean",beanDefinition);
getApplicationContext().getBean("dynamicBean");

在这种方法中,我们必须首先定义一个bean定义,注册,然后得到它。但是,我想在没有注册的情况下创建Bean,因此为此我使用了createBean方法( beanFactory)。但是,createBean的输入参数是Class<T>

但是,我需要创建带有bean定义的bean,而不需要注册它。我还调试了我的项目,发现creatBean是从AbstractAutowireCapableBeanFactory调用的。此方法调用另一个createBean,此方法具有beanDefinition参数,但不幸的是,该方法受到保护,我无法使用它。

所以,我的问题是,如何使用bean定义来创建bean,但不注册呢?

我想了很多,发现我可以用两种方法来处理这个问题,

  1. 然后使用registery.removeBeanDefinition将其从get bean中删除,或者,
  2. AbstractAutowireCapableBeanFactory创建一个包装器并使用它。

但是,我正在寻找一种能够更快执行的方法。

EN

回答 1

Stack Overflow用户

发布于 2014-03-27 09:40:53

也许这些是给你的:

代码语言:javascript
运行
复制
ConfigurableListableBeanFactory listableBeanFactory = (ConfigurableListableBeanFactory) this.beanFactory;
listableBeanFactory.registerSingleton("foo", foo);
foo = (Foo) listableBeanFactory.initializeBean(foo, "foo");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22682997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档