我刚刚开始使用 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/