Java 如何动态注册Springbean并将其设置为主
注册很容易。 只需要调用Java 如何动态注册Springbean并将其设置为主,java,spring,Java,Spring,注册很容易。 只需要调用beanFactory.registerSingleton(beanName,object) 但是beanFactory.getBeanDefinition(beanName).setPrimary(true)将抛出NPE 那么如何动态注册Springbean并将其设置为主吗?尝试调用 beanFactory.initializeBean(object, beanName); beanFactory.autowireBeanProperties(object, Autow
beanFactory.registerSingleton(beanName,object)代码>
但是beanFactory.getBeanDefinition(beanName).setPrimary(true)
将抛出NPE
那么如何动态注册Springbean并将其设置为主吗?尝试调用
beanFactory.initializeBean(object, beanName);
beanFactory.autowireBeanProperties(object, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
然后
beanFactory.getBeanDefinition(beanName).setPrimary(true)
你必须建立BeanDefinition。
e、 g
因此,您现在可以从应用程序上下文获取bean“beanName”。它不起作用,抛出异常:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“xxx”的bean可用
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(object.class)
.addPropertyValue("nameProperty1", propertyValue1)
.addPropertyValue("nameProperty2", propertyValue2)
BeanDefinition beanDefinition = builder.getBeanDefinition();
beanDefinition.setPrimary(Boolean.TRUE);
beanDefinitionRegistry.registerBeanDefinition(beanName, beanDefinition);