很难解释我真正想要什么。我有一个有方法的接口getRuntimeInfo()
它为我提供了类变量的所有运行时调试信息。我想查看实现该接口的所有类的列表。我正在使用 Java 和 Spring。
我可以做到这一点的一种方法是从 Spring Context 获取所有 bean 并使用instanceof
操作员。但我不想因为明显的性能影响而这样做。我还有其他选择吗?
这个解决方案怎么样:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
该列表仅填充一次(在启动时),因此它不会对“正常”运行时性能产生重大影响。
评论:
你能解释一下你的代码吗
你知道Spring是一个IOC容器。@Component
告诉 Spring 它应该创建这个类的一个实例(所谓的Spring 管理 Bean)。 IOC 还意味着容器负责注入对其他实例(Spring 托管 Bean)的引用。@Autowire
(也@Resource
and @Inject
-- all do the same)就是这样一个注解,告诉Spring这个字段应该由Spring填充。 Spring 本身试图找出应该填充该字段的实例。 spring 使用的默认技术是by type
这意味着 Spring 检查字段的类型,并搜索匹配的 bean。在你的情况下,它是一个通用列表 - 这有点特殊。在这种情况下,Spring 用一个列表填充该字段,其中元素都是与泛型类型匹配的 bean。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)