2013-01-07 50 views
7

Mẫu sau đây từ Spring manual gây nhầm lẫn cho tôi.Bộ nhớ đệm mùa xuân so với bộ nhớ đệm

<bean id="cacheManager" 
     class="org.springframework.cache.ehcache.EhCacheCacheManager" 
     p:cache-manager-ref="ehcache"/> 

<!-- Ehcache library setup --> 
<bean id="ehcache" 
     class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
     p:config-location="ehcache.xml"/> 

Quy ước đặt tên ủy nhiệm mà EhCacheManagerFactoryBean sản xuất một bộ nhớ cache quản lý, chính xác hơn đó là một ví dụ net.sf.ehcache.CacheManager. Tuy nhiên, đậu được gọi là ehcache không phải là ehcachemanager. Tuy nhiên, thực tế, cacheManager, tham chiếu đến bean này.

Trong văn xuôi, bạn có thể nói rằng đó là trình quản lý bộ nhớ cache Ehcache trong khi trình quản lý bộ nhớ cache Spring khác (được hỗ trợ bởi trình quản lý bộ nhớ cache cũ).

Nó trở nên tệ hơn nếu bạn sử dụng EhCacheFactoryBean:

<bean 
    id="myCache" 
    class="org.springframework.cache.ehcache.EhCacheFactoryBean"> 
    <property name="cacheManager"> 
    <ref local="ehcache" /> 
    </property> 

Có một tài sản được gọi cacheManager có sự tham khảo một bean gọi ehcache.

Tôi có hiểu nhầm bất cứ điều gì hoặc có thực sự gây nhầm lẫn không? Thiết kế xấu hoặc chỉ đặt tên xấu trong ví dụ?

Trả lời

5

Khung mùa xuân gần đây được giới thiệu caching abstraction với giao diện trung tâm org.springframework.cache.CacheManager. Giao diện này có vài tích hợp trong việc triển khai, bao gồm:

Thiết kế này cho phép bạn chuyển đổi bộ nhớ đệm thư viện mà không cần chạm mã ứng dụng. Như bạn có thể thấy một trong những cài đặt được cài sẵn này được hỗ trợ bởi EhCache. Tuy nhiên nhận thấy rằng EhCacheCacheManager chỉ là một cầu nối giữa Spring caching trừu tượng và thư viện EhCache. Vì vậy, nó cần hiện có net.sf.ehcache.CacheManager. Bạn có thể tự tạo một cá thể của trình quản lý bộ nhớ cache này hoặc tận dụng lợi thế của bean nhà máy hiện tại, cụ thể là EhCacheManagerFactoryBean.

Tôi hiểu rằng điều này gây nhầm lẫn vì các tên trùng lặp, nhưng phải rõ ràng từ những lớp học nào đến từ thư viện nào và tại sao chúng được sử dụng.

+1

Điều này xác nhận sự hiểu biết của tôi là chính xác. Bạn không nghĩ rằng 'ehcacheManager' sẽ là một tên thích hợp hơn cho đậu đó? –

+1

@ MarcelStör: bạn có thể đúng. Vui lòng mở [pull-request] (https://github.com/SpringSource/spring-framework) bằng tài liệu được sửa chữa. –

Các vấn đề liên quan