Java 如何动态创建多个相同类型的bean,然后收集/自动关联它们

Java 如何动态创建多个相同类型的bean,然后收集/自动关联它们,java,spring,spring-boot,Java,Spring,Spring Boot,假设在我的spring(boot)yaml配置文件中有一个命令列表: commands: [add,delete,copy,move] 以及我的spring(boot)项目中的相应类: 公共类命令{ 私有字符串名称; 公共命令(字符串名称){ this.name=名称; } public void execute(){ System.out.println(名称); } 公共字符串getName(){ 返回名称; } } 如何动态/自适应地生成正确数量的命令bean,然后在单独的类中收集/

假设在我的spring(boot)yaml配置文件中有一个命令列表:

commands: [add,delete,copy,move] 
以及我的spring(boot)项目中的相应类:

公共类命令{
私有字符串名称;
公共命令(字符串名称){
this.name=名称;
}
public void execute(){
System.out.println(名称);
}
公共字符串getName(){
返回名称;
}
}
如何动态/自适应地生成正确数量的命令bean,然后在单独的类中收集/自动关联它们,如下所示

公共类菜单{
@自动连线
列出命令;
公共空间显示(){
commands.forEach(cmd->System.out.println(cmd.getName());
}
}
提前非常感谢您的时间和专业知识


关于

对于动态bean注册,您可以使用
importBeanDefinitionRegistrator

代码如下所示:

import java.util.List;
导入org.springframework.beans.factory.config.BeanDefinition;
导入org.springframework.beans.factory.support.BeanDefinitionBuilder;
导入org.springframework.beans.factory.support.BeanDefinitionRegistry;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.context.annotation.import;
导入org.springframework.context.annotation.importBeanDefinitionRegistrator;
导入org.springframework.core.type.AnnotationMetadata;
@配置
@导入(CommandsConfiguration.registrator.class)
公共类命令配置{
静态类注册器实现ImportBeanDefinitionRegistrator{
@凌驾
公共无效注册表BeanDefinitions(AnnotationMetadata AnnotationMetadata,BeanDefinitionRegistry注册表){
final List commands=//从environemnt/config读取命令
用于(字符串命令:命令){
最后一个字符串beanName=command+“command”;
最终BeanDefinition BeanDefinition=BeanDefinitionBuilder
.genericBeanDefinition(Command.class,()->newcommand(Command))
.getBeanDefinition();
registry.registerBeanDefinition(beanName,beanDefinition);
}
}
}
}

是否需要将它们加载到spring
应用程序上下文中
?将yaml中的该属性放入
菜单
类中,并在其中创建
命令
实例没有什么错。