如何在春季DI中避免依赖对象的创建?

时间:2014-11-17 17:01:33

标签: java spring dependency-injection frameworks

我有A,B和C类.A具有B和B的ref具有C.A< -B< -C的ref。假设我们在运行时使用spring来注入对象。当我们调用getBean(" A")时,spring将为所有依赖类创建对象。现在我的要求是告诉spring它在创建一个对象时不应该创建C类对象。 C只应在调用B时或流到B时创建。

2 个答案:

答案 0 :(得分:0)

您需要明确地将bean标记为延迟初始化。

   <!-- A bean definition with lazy init set on -->
   <bean id="..." class="..." lazy-init="true">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

除非需要,否则容器不会初始化bean。请注意,如果加载了bean,它也会加载其依赖bean,而不管lazy-init的值是什么。

答案 1 :(得分:0)

默认情况下,spring容器将初始化代码中声明的所有spring bean。如果您不想要这种行为,那么可以将这些bean配置为懒惰地初始化。在您的情况下,如果您将bean C定义为延迟初始化,则在初始化Bean A(因为C依赖于A)时将初始化它,而不是在容器/应用程序上下文/ bean工厂启动时初始化。 我认为对于你提到的行为,没有这种方法来定义这样的初始化。