2

これが重複していないことを願っていますが、私の要件に関連する質問/回答が見つかりませんでした.

アプリケーションでは、(内部で ehcache を使用する) スプリング キャッシング アノテーションをサービス レイヤーのメソッドの多くに適用する必要があります。

たとえば、ContentService クラスには次の 2 つのメソッドがあります。

@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)
public ReturnObj getPageContent(BaseObject baseObj);

@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)
public ReturnObj getModuleContent(BaseObject baseObj);

ご覧のとおり、次のアノテーションはすべてのサービス メソッド アノテーションで繰り返され、冗長です。

@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)

質問 1 クラスに同じコードを散らかす代わりに、キャッシング アノテーションを拡張し、余分なものをそこに移動する方法はありますか?

例えば、

@CustomCaching
@Order(value = 2)
public ReturnObj getPageContent(BaseObject baseObj);

@CustomCaching
@Order(value = 2)
public ReturnObj getModuleContent(BaseObject baseObj);

CustomCaching インターフェースは、Spring の Caching インターフェースを拡張し、一般的に必要なアノテーションを 1 か所で適用できます。

Question2共通の場所で 指定@Order(value=2)して、このアノテーションをクラス内のすべてのメソッドに適用する方法はありますか?

4

0 に答える 0