Spring框架-与旧Java webapp的集成
我正在开发一个已有10年历史的JavaWebApp,我想在这个项目中引入一些新技术。我想开始做的事情之一是依赖注入。我知道Spring框架有能力进行依赖注入,但我很难将框架集成到旧项目中 有人能举一个例子,说明我需要在web.xml中更改哪些内容、需要添加的其他文件以及需要进行的其他更改吗?我想要最小的Spring内存占用,同时仍然可以执行依赖项注入 网上有很多关于使用Spring启动新项目的例子,但我找不到任何关于将Spring集成到旧项目中的例子Spring框架-与旧Java webapp的集成,java,spring,jakarta-ee,Java,Spring,Jakarta Ee,我正在开发一个已有10年历史的JavaWebApp,我想在这个项目中引入一些新技术。我想开始做的事情之一是依赖注入。我知道Spring框架有能力进行依赖注入,但我很难将框架集成到旧项目中 有人能举一个例子,说明我需要在web.xml中更改哪些内容、需要添加的其他文件以及需要进行的其他更改吗?我想要最小的Spring内存占用,同时仍然可以执行依赖项注入 网上有很多关于使用Spring启动新项目的例子,但我找不到任何关于将Spring集成到旧项目中的例子 谢谢。您必须首先在web.xml中添加一个上
谢谢。您必须首先在web.xml中添加一个上下文加载程序侦听器,以及Spring配置xml文件的位置 您应该将Spring
DispatcherServlet
配置为接受您希望它处理的所有URL
您应该编写控制器来绑定和验证HTTP请求,调用服务,将数据添加到ModelAndView
进行渲染,并根据需要将JSP映射到成功/失败视图
您应该将接口放在服务层和持久性层的前面。将实现移动到Spring可以注入的实现类中
根据需要利用Spring AOP实现安全性、事务和日志记录。您必须首先在web.xml中添加一个上下文加载程序侦听器,以及Spring配置xml文件的位置 您应该将Spring
DispatcherServlet
配置为接受您希望它处理的所有URL
您应该编写控制器来绑定和验证HTTP请求,调用服务,将数据添加到ModelAndView
进行渲染,并根据需要将JSP映射到成功/失败视图
您应该将接口放在服务层和持久性层的前面。将实现移动到Spring可以注入的实现类中
根据需要利用Spring AOP实现安全、事务和日志记录。在项目中使用新技术不会使项目更快\更好,除非您将新技术引入项目的所有部分。DI背后的思想是丢失对象之间的依赖关系。该项目可能是紧密耦合的,因此您必须至少重写部分内容。根据规模的不同,这可能是一个需要打败的怪物——问问自己这是否值得,除了引进新技术,它是否对项目有任何积极影响
关于将DI容器集成到旧项目中的教程很少甚至没有,原因很简单:它通常没有任何意义。要么在所有位置使用该模式,要么根本不使用。将两者混合在一起创造的私生子将是一个可怕的东西。我真的建议您考虑一下为什么要在这个10年的项目中引入DI容器。除非有很好的理由这样做(而且你很乐意重写大量代码),否则不要这样做。在项目中使用新技术不会使项目更快更好,除非你将新技术引入项目的所有部分。DI背后的思想是丢失对象之间的依赖关系。该项目可能是紧密耦合的,因此您必须至少重写部分内容。根据规模的不同,这可能是一个需要打败的怪物——问问自己这是否值得,除了引进新技术,它是否对项目有任何积极影响
关于将DI容器集成到旧项目中的教程很少甚至没有,原因很简单:它通常没有任何意义。要么在所有位置使用该模式,要么根本不使用。将两者混合在一起创造的私生子将是一个可怕的东西。我真的建议您考虑一下为什么要在这个10年的项目中引入DI容器。除非有很好的理由这样做(而且你很乐意重写大量代码),否则不要这样做。我不同意这一点:这不是为了让应用程序更快;这是关于以这样一种方式构建它,使它在未来变得更好。根据我的经验,Spring特别擅长在不要求重写应用程序的部分内容的情况下进行重写。我真的不认为这样做有什么意义。基本上,您将有两个并行运行的应用程序,它们恰好共享一些代码/数据。现在想象一个只在项目的DI端工作的开发人员,现在需要在另一端修复一些东西,并假设它也是DI。如果你认为DI的使用会使应用程序的结构变得更好,那么花点时间重构它。逻辑不会改变,所以它应该能够以快速的方式完成。这是一个旧的web应用程序。它可能分层不好;这可能很难测试和扩展。这样做有很多原因。当然,当重构后的应用程序完成并被证明与旧应用程序相匹配时,你会退出旧应用程序;这是关于以这样一种方式构建它,使它在未来变得更好。根据我的经验,Spring特别擅长在不要求重写应用程序的部分内容的情况下进行重写。我真的不认为这样做有什么意义。基本上,您将有两个并行运行的应用程序,它们恰好共享一些代码/数据。现在想象一个只在项目的DI端工作的开发人员,现在需要在另一端修复一些东西,并假设它也是DI。如果你认为DI的使用会使应用程序的结构变得更好,那么花点时间重构它。逻辑不会改变,所以它应该能够以快速的方式完成。这是一个旧的web应用程序。它可能分层不好;这可能很难测试和扩展。那里