atm*_*ish 8 java spring interface
很难解释我真正想要的东西.我有一个接口,它有一个方法getRuntimeInfo()
,为我提供类的变量的所有运行时调试信息.我想查看实现此接口的所有类的列表.我正在使用Java和Spring.我可以这样做的一种方法是从Spring Context获取所有bean并使用instanceof
运算符进行检查.但我不希望这样做对明显的性能影响.我还有其他选择吗?
Ral*_*lph 13
这个解决方案怎么样:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
Run Code Online (Sandbox Code Playgroud)
List仅填充一次(启动时),因此它不应对"正常"运行时性能产生重大影响.
评论:
你能解释一下你的代码吗?
你知道Spring是一个IOC容器.@Component
告诉Spring它应该创建这个类的实例(一个所谓的Spring Managed Bean).IOC还意味着Container负责注入对其他实例的引用(Spring Managed Beans).@Autowire
(以及- @Resource
和@Inject
所有相同的)是这样一个注释告诉Spring这个字段应该由Spring填充.Spring本身试图找出该字段应该填充的实例.spring使用的默认技术是by type
这意味着Spring检查字段的类型,并搜索匹配的bean.在你的情况下,它是一个通用列表 - 这有点特别.在这种情况下,Spring使用列表填充字段,其中元素是与泛型类型匹配的所有bean.
归档时间: |
|
查看次数: |
2457 次 |
最近记录: |