0

我正在使用 bean factory 从测试类中加载一个 spring bean

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("my-bean-file.xml"))
MyBean bean = (MyBean) factory.getBean("myBean")

我可以使用 Spring JUnit4TestRunner 加载单个 bean 还是仅用于加载整个应用程序上下文?

4

2 回答 2

1

如果你想这样做是因为你的 bean 太昂贵而无法全部加载,你可以声明它们是惰性的,这意味着它们只会在需要时加载。

Spring 文档示例:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

<bean name="not.lazy" class="com.foo.AnotherBean"/>

但是,当延迟初始化的 bean 是未延迟初始化的单例 bean 的依赖项时,ApplicationContext 会在启动时创建延迟初始化的 bean,因为它必须满足单例的依赖项。延迟初始化的 bean 被注入到没有延迟初始化的其他地方的单例 bean 中。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-lazy-init

于 2012-06-13T09:06:55.100 回答
1

它将加载整个应用程序上下文。但是你可以拆分你的 bean 文件(例如分成 DAO、服务层、控制器),并在你的主应用程序中包含每个文件一次。在您的测试中,只需使用您感兴趣的图层即可。

于 2012-06-13T12:01:17.883 回答