java - 是否可以\建议重构 Spring MVC 应用程序以使用另一个 MVC 框架?

标签 java spring-mvc refactoring

我刚刚开始使用 Spring,目前正在阅读 Spring in Action加速。在引用 Spring 与 EJB 的优点时,该书做出了如下声明:

"With Spring, components are typically not required to implement, extend, or use any Spring-specific classes or interfaces, making it possible to reuse the components anywhere, even in the absence of Spring."

我的应用程序当前正在使用 Spring MVC。我可以看到上述陈述对于我的应用程序的业务逻辑是如何成立的,因为依赖注入(inject)的使用已经将我们的 bean 与 Spring 框架完全解耦。但是 MVC 的东西呢,在本例中是一个 Web 应用程序?我很好奇将来是否可以将我的应用程序中的 Spring MVC 替换为另一个 MVC 框架。

我的问题有两个:
1) 我是否应该将 Web 层视为与 Spring 框架紧密耦合,并假设 MVC 中的更改需要创建新的 Web 应用程序来支持它?

2) 如果不是,将 Web 应用程序与 Spring 解耦会涉及什么?我已经可以猜测,在没有 Spring 框架的情况下,所有注释都需要从 Controller 中删除,并且需要重构相关代码以支持新的 MVC 框架。

我对经历过这一过程的人的见解特别感兴趣。

最佳答案

好问题。正如您正确指出的那样,MVC 框架确实倾向于将您的代码与 Spring API 的耦合比与业务逻辑层的耦合更紧密。

这几乎是不可避免的,尽管比 Spring 3 的程度要小得多,在 Spring 3 中,注释被大量用于将请求映射到 Controller 等。方法参数和返回值与 Spring API 的耦合大大减少。 Controller 可以用业务逻辑来表达自己。

但是,为了从 Spring MVC 获得任何形式的表达能力,通常需要使用其 API。

因此,回答你的问题,虽然从 Spring API 到 Controller 代码的耦合非常小,但它确实存在,并且需要删除。但是,由于它是一个非常非侵入性的 API,因此您的代码中应该很少有设计妥协,从而更容易适应另一个框架。

关于java - 是否可以\建议重构 Spring MVC 应用程序以使用另一个 MVC 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350668/

相关文章:

java - Spring Integration 中调用服务激活器与 bean 方法

Java + OpenCV SVM 训练错误

java - 我们可以在一个 Web 应用程序中使用不同的 Java Web 框架吗?

spring - 为什么添加@Transactional会导致异常org.springframework.beans.factory.BeanCreationException : Error creating bean with name?

java - 通过传递泛型方法进行重构

java - HttpMessageNotReadableException : Could not read JSON: Read timed out

java - 设计决策 : extending an interface vs. 新界面

java - Spring MVC 模型绑定(bind)不适用于非公共(public)成员

python - SQL:从可能位于另一个表中的列中获取值

java - 获取 Java 方法的调用层次结构,包括存储库中的其他项目