我看到它在初始启动时初始化原型bean。如何防止这一点?如何让spring只有通过getBean()才能初始化“prototype”bean?
4
A
回答
8
这不是真的,原型范围的豆是而不是在启动时初始化,除非其他的东西有对它们的引用。
如果您发现发生了这种情况,那么您必须具有从singleton bean到原型bean的引用,并且singleton bean的初始化正在触发创建原型。
2
正如Skaffman在他的post中所述,原型bean在启动时未初始化。
即使这个配置了lazy-init的原型bean设置为false,也不会在执行ApplicationContext.getBean(..)
方法之前创建。
<bean id="demo" class="demo.Demo" scope="prototype" lazy-init="false">
这只是添加调试日志消息到你的bean的构造函数或启动你的调试器,然后你会自己看到它。
如果您收到您的bean原型是这样的:
Demo demo = context.getBean("demo", Demo.class);
然后,它是绝对没有机会,它在容器启动时初始化。
如果你仍然急于用原型范围初始化bean,我建议你展示与Spring容器和Spring配置交互的代码。
一种情形,当容器启动时(只要你的bean没有与lazy-init="true"
配置)bean原型将被初始化:
SingletonBean singletonBean = context.getBean(SingletonBean.class);
Demo demo = singletonBean.getDemo();
如果一个singleton bean有一个bean原型的依赖,该原型bean将与singleton bean一起初始化。
通过singletonBean检索演示对象的另一个副作用是,无论您执行context.getBean(SingletonBean.class);
方法的次数多少,您都只有一个演示对象。
相关问题
- 1. Spring bean懒初始化
- 2. 从web.xml初始化spring bean
- 3. Spring bean初始化之前的初始化
- 4. Spring Bean初始化的顺序
- 5. 在Spring Map中懒洋初始化bean
- 6. Spring不初始化bean(dbunit);我错过了什么?
- 7. 如何在Spring框架中使用注解初始化java bean?
- 8. 如何在spring bean初始化后运行作业?
- 9. 如何在Spring启动期间为bean初始化生成HttpServletRequest?
- 10. 只在需要时才初始化
- 11. 如何重新初始化我的bean
- 12. 对象只能通过工厂方法初始化(Objective-c)
- 13. 如果已经初始化,通过shell重新初始化rbenv
- 14. 是否有可能在运行时重新初始化Spring中的bean?
- 15. bean初始化失败; ConversionNotSupportedException
- 16. 异步Bean初始化
- 17. 通过反序列化创建Spring bean
- 18. 只有在没有初始化的情况下才使用alloc才行吗?
- 19. 只有在点击后才初始化mousemove事件
- 20. 如何初始化(并重新初始化)通过JavaScript引导选择
- 21. 通过初始化程序列表初始化QList
- 22. 在web应用程序初始化的Spring bean启动
- 23. 在Spring MVC中初始化应用程序范围的bean
- 24. 从另一个类的静态方法初始化Spring bean?
- 25. 我们可以计算Spring bean的初始化时间
- 26. 使用多重arg方法的Spring bean初始化
- 27. 初始化Spring Batch的DB之前,应用程序bean创建
- 28. Spring Java配置指定bean不会初始化
- 29. 如何将SecureString初始化为只读
- 30. 用Spring初始化Log4J?
没有。我有一个从原型到单身的参考。所以singleton是原型的一个属性。虽然这两个都已初始化,但单身人士应该是这样,我看不出有任何需要立即初始化原型。它仍然发生。 – EugeneP 2010-05-12 13:45:34
2个想法...使用eclipse spring插件获取bean依赖关系的映射,以便您可以查看它是否由另一个单例依赖,还可以在原型bean的构造函数中放置一个断点,以便您可以查看在什么导致其实例化。 – 2010-05-12 13:50:29
@EugeneP:你正在做*某事*触发原型的初始化。我告诉你,Spring不会在启动时自动初始化原型。 – skaffman 2010-05-12 13:58:00