Spring中的依赖注入。 关于原型范围不方便

Spring的DI对singleton scope bean工作正常。 但是,关于原型范围,如果原型bean本身会注入其他bean,这并不方便。 关于原型bean,我想用Java的new关键字创建它们,并且运行时构造函数参数很难在XML bean配置中静态描述。 使用新的关键字使得Spring容器中的prototype bean变得不可用,当然不可能在其中使用Spring DI。

我想知道人们是如何解决这样的问题的? 当然,我可以使用AspectJ来做自己的注射作为补偿。 但有两种注射机制对我来说不是一个很好的解决方案。


@Configurable标记你的原型bean


您应该能够通过context.getBean(name)context.getBean(class)创建原型对象,其中上下文是ApplicationContext实例。

另一种,也许更方便的方法是使用工厂模式,工厂对象是一个具有所有依赖关系的单例,并将它们传递给factory.createInstance(...)构造的对象。


Spring允许将构造函数值传递给getBean()方法,查看这个SO-Post:

具有动态构造函数值的spring bean

此外,从上下文中检索一个bean会有什么错误,这只是部分初始化的,而且您是通过setters自己设置运行时参数的?

请注意,Spring-Beans默认为Singletons,所以在你的Spring-Config中,你必须明确地将它们指定为原型范围!

链接地址: http://www.djcxy.com/p/22683.html

上一篇: Dependency injection in Spring. not convenient regarding to prototype scope

下一篇: Spring Lookup method injection not working