我刚开始使用Spring,目前正在阅读Spring in Action以提升。在引用Spring与EJB的好处时,本书发表了声明:
“使用Spring,组件通常是 不需要实现,扩展或 使用任何特定于Spring的类或 接口,使其成为可能 在任何地方重用组件,甚至在 没有春天。“
我的应用程序目前正在使用Spring MVC。我可以看到上面的语句如何适用于我的应用程序的业务逻辑,因为依赖注入的使用已经完全将我们的bean与Spring框架分离。但是MVC的东西呢,在这种情况下是一个Web应用程序?我很好奇是否有可能在未来将我的应用程序中的Spring MVC替换为另一个MVC框架。
我的问题是双重的:
1)我应该将Web层视为与Spring框架紧密耦合,并假设我的MVC中的更改需要创建新的Web应用程序来支持它吗?
2)如果没有,将Web应用程序与Spring分离会涉及什么?我已经可以猜测,在没有Spring框架的情况下,需要从控制器中删除所有注释,并且需要重构相关代码以支持新的MVC框架。
我对任何经历过这个过程的人的见解特别感兴趣。
答案 0 :(得分:0)
好问题。正如您正确指出的那样,MVC框架确实倾向于将您的代码与业务逻辑层更紧密地耦合到Spring API。
这几乎是不可避免的,尽管比Spring 3要小得多,其中注释被大量用于将请求映射到控制器,等等。方法参数和返回值与Spring API的耦合大大减少了。控制器可以根据其业务逻辑表达自己。
然而,为了从Spring MVC获得任何形式的表达能力,通常会涉及其API的一些使用。
所以回答你的问题,虽然从Spring API到你的控制器代码的耦合非常小,但是它就在那里,并且需要被删除。但是,由于它是一个非常非侵入性的API,因此代码中应该很少有设计上的妥协,这使得它更容易适应另一个框架。