当前位置: 首页 > 面试题库 >

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

唐炳
2023-03-14
问题内容

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

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

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

注意:仅迭代所有定义的bean的解决方案是没有用的,因为我有很多惰性bean,并且其中一些不能被实例化,因为这在某些测试中会失败(即,我有一个需要a的bean,java.sql.DataSource但是测试有效,因为它们没有不需要那个豆)。


问题答案:

例如:

 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上下文中有几个bean,它们具有状态,所以我希望在单元测试之前/之后重置该状态。 我的想法是向helper类中添加一个方法,该方法只检查Spring上下文中的所有bean,检查用或注释的方法,并调用它们。 注意:简单地迭代所有已定义bean的解决方案是无用的,因为我有许多惰性bean,其中一些不能实例化,因为这在某些测试中会失败(例如,我有一个bean需要,但测试工作,因为它们不需

  • 我有一个名为的接口。实现的类(我们称之为)也实现了接口,因此我可以使用它实例化线程。这是我的密码了。 我要做的是在我的ApplicationContext.xml中声明实现类,并为每次迭代获得一个新实例。所以我的代码看起来如下所示: 如果可能的话,我还想保持国际奥委会的模式。 如何执行此操作? 谢谢

  • 问题内容: 无论如何,有没有指定实例化bean的顺序?即我想在其他bean之前实例化特定的bean,就像启动顺序一样。 我正在使用Spring 3.2和基于注释的声明方法。 问题答案: 如果豆 甲 取决于豆 乙 通过定义,或则的顺序被强制和由Spring容器固定。没问题 但是,如果要强制执行未通过显式依赖关系表示的特定的Bean创建顺序,请随时使用: 或更好(带有注释,也可以与Java配置一起使用

  • 我使用JSF和托管Beans创建了一个简单的应用程序。从托管bean,我试图实例化一个将数据存储到数据库的spring bean。然而,“@autowired”注释似乎不起作用,因为我得到了一个nullpointerexcpetion。我阅读了关于如何在Spring中使用JSF和托管bean的所有相关主题,但不能解决这个问题。也许有人可以看看下面的代码,给我一个提示? 服务Bean faces.c

  • 需要一些关于Spring自动装配和范围的帮助。 这是基本的应用程序结构: > CustomHttpClient由我的应用程序中的多个服务使用。每当我使用CustomHttpClient时,我都会通过以下方式自动连接该客户端的实例: 我使用拦截器修改CustomHttpClient中的一些变量,如下所示: 现在,问题来了。如果我按照上述方式设置了所有内容,那么每当我通过拦截器更改CustomHttp

  • JAR2(非Spring项目)