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