2012-07-17 37 views
1

我目前正在重构Spring-MVC控制器中一个方法的(前)怪物。该方法主要做了以下几件事:如何将资源映射到枚举常量?

  1. 挖了从请求
  2. 获取从缓存
  3. 由他们鉴定了一个XML表示几个标识使用一个XSL样式表来产生PDF(然后将其存储到缓存并将可以找到的密钥添加到Model)。

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

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

关于如何解决这个问题,而不是使枚举和控制器过紧耦合的任何想法?

回答

0

最后,我将枚举作为控制器的内部类,并为其添加了一个名为getXsl的抽象方法。实现枚举常量现在直接返回相关的Resource。由于Resource豆已经是静态的,我不必改变任何东西。