[英]Writing a custom Spring @Cacheable annotation
我目前正在編寫一個自定義的@Cacheable注釋,除了Spring的@Cacheable提供的那些之外,它還將采用額外的元數據屬性。 但是,Spring需要知道如何解析這個新的注釋。 我的理解是我需要擴展和覆蓋AnnotationCacheOperationSource的determineCacheOperations(),以便可以使用從其初始化的適當的CacheableOperation類來解析新的注釋。 這是正確的方法嗎?
問候,
史蒂夫
要看。
根據AnnotationCacheOperationSource javadoc ,
該類讀取Spring的Cacheable,CachePut和CacheEvict注釋,並將相應的緩存操作定義公開給Spring的緩存基礎結構。 此類還可以作為自定義CacheOperationSource的基類。
因此,如果您可以擴展該類以獲得CacheOperationSource的擴展行為,那么如果您要求是/否答案,則答案是肯定的。
但是,determineCacheOperations()方法的作用是它使用所有可用的CacheAnnotationParsers。 唯一的默認CacheAnnotationParser是SpringCacheAnnotationParser 。 如果你有一個自定義的,只需要另一個類為你的注釋實現CacheAnnotationParser。 然后Spring應該自動使用它。 您可以查看SpringCacheAnnotationParser 源代碼 ,了解它們是如何做到的。
編輯:好的,我錯了,因為這會自動發生。 我的下一個建議是
定義你的自定義AnnotationCacheOperationSource使用與Spring一樣的id,因此它將覆蓋Spring內部。 如果id匹配,它應該干凈地覆蓋Spring。 這將是這樣的:
<bean id="annotationCacheOperationSource" class="com.company.YourCustomAnnotationCacheOperationSource" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.