私は現在、Spring-MVCコントローラーのメソッドの(以前の)モンスターをリファクタリングしています。このメソッドは基本的に次のことを行います。
- リクエストからいくつかの識別子を掘り起こします
- キャッシュからそれらによって識別された製品のXML表現を取得します
- XSLスタイルシートを使用してPDFを生成します(PDFはキャッシュに保存され、見つかったキーがに追加されます
Model
)。
他のすべての製品固有のものを含む列挙型を作成することで、重複したロジックのほとんどすべてを削除することができましたがProduct
、XSLスタイルシートの場所に問題があります。以前org.springframework.core.io.Resource
はコントローラーBeanの-typeプロパティとして構成されていましたが、製品固有のものが列挙型に含まれるようになったため、何らかの方法で列挙型定数にマップするか、それらを見つけるための別のソリューションを見つける必要があります。
XSLは1対1の関係にあるため、列挙型の一部として使用するのが最適だと思いますが、そこにリソースを注入する方法はありません。クラスローダーを使用してリソースを列挙型に手動でロードすることはテストでは機能しますが、スタイルシートファイルがクラスパスにないため、実稼働環境では問題が発生します。さらに、列挙型をSpringのものに依存させたくありません。
列挙型とコントローラーを緊密に結合せずにこの問題に取り組む方法についてのアイデアはありますか?