2011-03-29 64 views
0

我正在研究一个拥有10年历史的Java Web应用程序,并且我想向该项目中引入一些新技术。我想开始做的一件事是依赖注入。我知道Spring框架有能力进行依赖注入,但我很难将框架集成到旧项目中。Spring Framework - 与旧的Java Web应用程序集成

有人可以提供一个例子,我将不得不在我的web.xml中更改什么,其他文件,我将不得不补充,我需要做的其他文件?我想要最小的Spring脚本,同时仍然需要执行依赖注入。

有很多的例子在线约使用Spring开始一个新的项目,但我无法找到任何有关整合春天到旧项目。

谢谢。

回答

3

您必须首先在web.xml中添加一个上下文加载器监听器,以及Spring配置XML文件的位置。

您应该配置Spring DispatcherServlet以接受您希望它处理的所有URL。

您应该编写控制器来绑定和验证HTTP请求,调用服务,将数据添加到ModelAndView进行渲染,并根据需要将JSP映射到成功/失败视图。

您应该将接口放在服务和持久层的前面。将实现移到Spring可以注入的实现类中。

利用Spring AOP进行安全性和事务处理,并根据需要进行日志记录。

+0

这有帮助,谢谢。我让Spring在我的服务器启动时运行,并初始化我在applicationContext.xml中定义的类。我认为Spring虽然可能对于依赖注入来说太重了。但是,如果没有将该类作为Spring bean包含在内,我就无法注入到类中,而这正在呈现它自己的问题。 – 2011-03-29 16:16:19

+0

对,Spring除非受其控制,否则不能注入它。不应该是一个大问题。 – duffymo 2011-03-29 17:10:50

1

在项目中投入新技术不会使其更快\除非您将新技术引入到项目的所有部分,否则更好。 DI背后的想法是丢失对象之间的依赖关系。这个项目可能紧密结合,所以你必须重写至少部分内容。根据规模大小,这可能会成为一个可怕的怪物 - 问问自己这是否值得,如果除了引进新技术,它对项目有什么积极影响。

为什么几乎没有关于将DI容器集成到旧项目中的教程很简单:通常没有任何意义。要么你在所有地方使用这种模式,要么根本没有。通过混合两种方式创造的混蛋孩子将是一个可怕的维护。我真的建议你想想为什么你想介绍一个DI容器进入那个10年的项目。除非有一个真正的理由去做(而且你很高兴重写很多代码),否则不要这样做。

+0

我不同意这一点:这不是关于让应用程序更快;这是关于如何以这样的方式来构建它,以便将来可以变得更好。根据我的经验,Spring特别擅长应用部分应用程序,而不需要全部或全部重写。 – duffymo 2011-03-29 00:36:42

+0

我真的不明白这一点。基本上,你将有两个并排运行的应用程序,它们恰好共享一些代码/数据。现在设想一个开发人员只在项目的DI方面工作,现在需要解决另一方面的问题,并假定它也是DI。如果您认为DI的使用会使应用程序的结构更好,请花时间对其进行重构。逻辑不会改变,所以它应该能够快速完成。 – Femaref 2011-03-29 00:47:30

+0

这是一个旧的网络应用程序。它可能分层不好;它可能很难测试和扩展。做这件事有很多原因。当然,当重构的应用程序完整且经过验证与旧版应用程序相匹配时,您会退出较旧的应用程序。 – duffymo 2011-03-29 09:23:35

相关问题