我有A,B和C类.A具有B和B的ref具有C.A< -B< -C的ref。假设我们在运行时使用spring来注入对象。当我们调用getBean(" A")时,spring将为所有依赖类创建对象。现在我的要求是告诉spring它在创建一个对象时不应该创建C类对象。 C只应在调用B时或流到B时创建。
答案 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工厂启动时初始化。 我认为对于你提到的行为,没有这种方法来定义这样的初始化。