java - 如何在运行时在方法中自动装配类
问题描述
是否可以在动态类中自动装配字段?我从数据库中得到一个类名,我想自动装配这个类
解决方案
简答
那是不可能的。Spring 需要知道有哪些 Bean 用于注入它们。
长答案
您可以将@Autowire
每个可能的 bean 放入一个类中,然后将它们缓存在一个 Map 中,其中 Class 表示键,Object 表示值。请参见下面的简化示例:
public class MyClass{
private final Map<Class<?>, Object> cache = new HashMap<>();
@Autowired
public MyClass(Service1 s1, Service2 s2){
// registering the beans
cache.put(Service1.class, s1);
cache.put(Service2.class, s2);
}
public <T> T getService(String className) throws ClassNotFoundException{
// getting the bean
Class<?> clazz = Class.forName(className);
return (T) cache.get(clazz);
}
}
推荐阅读
- javascript - Kyle Simpson 的 OLOO 模式如何处理未初始化的对象?
- build - 如何在 Azure 构建策略中为 PR 添加状态检查验证
- sql - 分组和划分
- macos - 完成:13:找不到命令:compdef
- flutter - 如何从颤动的 URL 中获取价值
- visual-studio - 在 Visual Studio Build 和 nuget restore 命令期间,packages.config 文件被忽略
- r - 如何在 AWS EMR 中安装 R 语言版本 4 - Amazon linux 2
- r - 在主函数之外声明辅助函数是否更有效?
- swift - Swift 无法从 asp.net Web 服务读取 http 响应标头
- wpf - HowTo:将“Xaml 中的材料设计”“ComboBox”行为更改为仅在单击箭头时显示下拉菜单?