Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何动态注册Springbean并将其设置为主_Java_Spring - Fatal编程技术网

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);