如何从.xml配置中提取2.5版之前的内容?这让我感到困扰,因为如果@Autowired
从我的武器库中删除,我真的不知道该怎么做。
说我想使用一些DAO实现。
在服务类我经常写:
@Autowired
someDaoInterface generalDao;
然后我通常打电话
generalDao.someInterfaceMethod(someParam param);
如何从Spring 2.0中的config中提取实现以使用此方法?
它是否只是愚蠢:new ApplicationContext(pathToXml)
然后使用.getBean
或其他方式?
为什么我要求从配置文件中取出bean? 因为在Spring MVC中,如何在不从应用程序上下文中取出bean的情况下执行逻辑。
如果你有@Controller
处理程序,那么你需要调用服务类的方法吗?所以它们应该以某种方式从上下文中检索,到目前为止唯一的方法是使用@Autowired
?然后我还想填充Service类,就像我在前面的例子中用DAO类所说的那样,它们也需要从应用程序上下文中检索,所以我可以自己编写服务类的逻辑。过去人们会如何做到这一点?
我认为@Autowired
是解决问题的唯一方法,不是因为自动连线也很方便 - 我对XML完全没问题。
答案 0 :(得分:0)
您仍然可以通过property或constructor参数明确地连接它。 (无论如何,如果容器中存在歧义,则自动装配不会起作用)
当然,您可以在Java代码中使用应用程序上下文和getBean(),但它违反了DI模式并使所有弹簧内容无用。 DI的目的是将您的业务loginc与实现细节分离 - 它不是业务逻辑,而是依赖关系的来源和位置。依赖性就在那里。
通过使用ApplicationContext.getBean(),您将破坏此模式,并将依赖项引入:
完成此操作后,您可以放弃使用DI和弹簧,因为您刚刚取消了DI提供给您的所有优惠。 (BTW,@ Autowired还引入了对spring的依赖,并且违反了DI模式,它也暗示只有一个实例可用)
另外,答案是:在理想情况下,代码中根本不应该提到spring。 没有导入,没有注释 - 只是协作实体的接口。