在应用程序内部不受spring管理的深层访问spring组件的最佳方式(或选项)是什么?
例如,假设我有一些@控制器。通过一些不是由spring管理的POJO的抽象层,这些@控制器最终可能会使用一个需要注入@Service的POJO。
一种选择是将所有的层都放到spring组件中,但这似乎是我在修改我的设计,以迫使spring帮助我。我有一些复杂的事情正在进行,如果我必须@Autowire所有的东西,这些事情就不会那么干净了。另一种选择可能是手动注入低级类中的组件,但我不确定这是否可能或正确的解决方案。
发布于 2012-09-21 23:36:21
本着回答原始问题的精神,我要说的是,您可以让低级非spring类实现ApplicationContextAware来访问ApplicationContext,并使用ApplicationContext来访问您想要的任何spring bean。(谷歌搜索“spring application context aware”找到sample code)
然而,本着解决大问题的精神,这个问题从一开始就有几个问题。首先,听起来你有一些高级组件想要注入到低级组件中--通常你希望你的设计是相反的。此外,正如已经指出的那样,彼此“分层”的事物可能不应该相互依赖。在这种情况下,根据这些要点改进设计将对您有所帮助。
为了充分利用您已经在使用的框架,我不会回避将所有层都转换为spring组件。如果您想使用DI框架,通常使用它来构造整个应用程序是很有帮助的。我认为,一个整洁的设计,始终使用@Inject ( Java EE标准),并使用DI框架连接和作用域控制,实际上比必须“新”所有东西更干净。
https://stackoverflow.com/questions/12532451
复制相似问题