gpt4 book ai didi

spring - 如何从 Spring 中获取实例化 bean 的列表?

转载 作者:IT老高 更新时间:2023-10-28 13:51:26 24 4
gpt4 key购买 nike

我的 Spring 上下文中有几个具有状态的 bean,因此我想在单元测试之前/之后重置该状态。

我的想法是向一个助手类添加一个方法,它只遍历 Spring 上下文中的所有 bean,检查用 @Before@After 注释的方法> 并调用它们。

如何从 ApplicationContext 中获取 实例化 bean 的列表?

注意:简单地遍历所有定义的 bean 的解决方案是没有用的,因为我有很多惰性 bean,其中一些不能被实例化,因为某些测试会失败(即我有一个需要 java.util 的 bean。 sql.DataSource 但测试工作,因为他们不需要那个 bean)。

最佳答案

例如:

 public static List<Object> getInstantiatedSigletons(ApplicationContext ctx) {
List<Object> singletons = new ArrayList<Object>();

String[] all = ctx.getBeanDefinitionNames();

ConfigurableListableBeanFactory clbf = ((AbstractApplicationContext) ctx).getBeanFactory();
for (String name : all) {
Object s = clbf.getSingleton(name);
if (s != null)
singletons.add(s);
}

return singletons;

}

关于spring - 如何从 Spring 中获取实例化 bean 的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com