跟踪实现特定接口的所有类?

2024-04-10

很难解释我真正想要什么。我有一个有方法的接口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(使用前将#替换为@)

跟踪实现特定接口的所有类? 的相关文章

随机推荐