这很难解释我真正想要的。我有一个接口,它有一个方法getRuntimeInfo()
,它为我提供了一个类的变量的所有运行时调试信息。我想看看实现这个接口的所有类的列表。我正在使用Java和Spring。 我可以做到这一点的一种方法是从Spring上下文中获取所有bean,并使用instanceof
运算符进行检查。但我不希望这样做,因为明显的性能影响。我有其他的选择吗?跟踪所有实现特定接口的类吗?
8
A
回答
13
这个怎么样的解决方案:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
列表中只填入一次(在启动时),因此它不应该在“正常”运行时性能有显著的影响。
评论:
你能解释一下你的代码
你知道春天是一个IOC容器。 @Component
告诉Spring它应该创建这个类的一个实例(所谓的Spring Managed Bean)。 IOC还意味着Container负责将引用注入其他实例(Spring Managed Beans)。 @Autowire
(以及@Resource
和@Inject
- 都是这样做)就是这样一个注释,它告诉Spring这个字段应该被Spring填充。 Spring本身试图找出该字段应该填充的实例。 Spring使用的默认技术是by type
这意味着Spring检查字段的类型并搜索匹配的bean。在你的情况下,它是一个通用列表 - 这有点特别。在这种情况下,Spring使用列表填充字段,其中元素是与泛型类型匹配的所有bean。
2
如何从ApplicationContext的getBeansOfType方法?它返回一个实现你的接口的bean的Map?
相关问题
- 1. 我该如何跟踪(枚举)实现接口的所有类
- 2. Java,获得实现特定接口的URLClassLoader的所有类
- 3. NUnit - 如何测试实现特定接口的所有类
- 4. 查找所有实现特定接口的类
- 5. 列出所有的DLL从GAC实现特定接口
- 6. 查找实现特定接口的所有Java bean
- 7. 所有类应该实现IDisposable接口吗?
- 8. Ninject绑定的所有类实现相同的接口
- 9. 列出实现给定接口的包中的所有类
- 10. 实现具有特定类型的多态Java接口
- 11. 枚举实现给定接口的所有Delphi类?
- 12. 自然特征跟踪 - 增强现实
- 13. 实例化实现通用接口实例的所有类
- 14. 实现特定接口并具有特定超类的参数:泛型或instanceof?
- 15. 特定类型的实现类使用的接口
- 16. 没有实现所有的接口方法。可能吗?
- 17. CustomTraceListener类实现跟踪HTTP请求
- 18. 科特林anonim类实现接口
- 19. 寻找实现C#接口的所有类 - 类似于Java
- 20. 是否有可能获得实现接口的所有类?
- 21. javareflection返回实现特定接口的类的列表
- 22. 定义接口中的类实现
- 23. 确定类型实现的接口
- 24. 带/不带特定类实现的设计接口
- 25. 如何获得Guice的所有实现者/接口的子类?
- 26. 类设计:类实现接口实现另一个接口
- 27. 使用JDO,是否可以查询实现特定接口的所有对象?
- 28. Api控制器获取实现接口的所有类型
- 29. 测试在Java中实现接口的所有类
- 30. 向实现接口的所有类添加一个方法
是正常的春天autowiring功能,没有什么特别的。它只是弹簧的核心功能 – Ralph 2012-02-05 10:23:18
@ user1117398:我扩展了我的答案来解释一下。 - 看起来你应该阅读Spring 3.0!或3.1教程。 – Ralph 2012-02-05 11:47:36