1

我目前正在重构 Spring-MVC 控制器中方法的(前)怪物。该方法基本上做了以下事情:

  1. 从请求中挖掘出一些标识符
  2. 从缓存中获取由它们标识的产品的 XML 表示
  3. 使用 XSL 样式表生成 PDF(然后将其存储到缓存中并将可以找到的键添加到Model.

Product通过创建一个包含所有其他产品特定内容的枚举,我已经能够删除几乎所有重复的逻辑,但是 XSL 样式表的位置是有问题的。以前它们被配置为org.springframework.core.io.Resource控制器 bean 的 -type 属性,但现在产品特定的东西在枚举中,我要么需要以某种方式将它们映射到枚举常量,要么找到另一个解决方案来定位它们。

我认为最好将 XSL 作为枚举的一部分,因为它们之间存在一对一的关系,但是没有办法在那里注入资源。使用类加载器手动将资源加载到枚举中可以在测试中工作,但在生产环境中会出现问题,因为样式表文件不在类路径中。另外,我不想让枚举依赖于任何 Spring 的东西。

关于如何在不使枚举和控制器过于紧密耦合的情况下解决这个问题的任何想法?

4

1 回答 1

0

最后,我将枚举设置为控制器的内部类,并添加了一个调用getXsl它的抽象方法。实现枚举常量现在Resource直接返回相关的。Resource由于bean 已经是静态的,因此我无需更改任何其他内容。

于 2012-07-26T14:36:40.710 回答