2016-09-08 30 views
9

Tôi đang cố gắng để có được Ehcache 3 làm việc với Spring 4 mà không cần sử dụng Spring boot.Sử dụng ehcache 3 with Spring Annotations (không sử dụng Spring Boot)

Here is a working example out there which uses Spring Boot, nhưng tôi đang làm việc trên ứng dụng hiện có không sử dụng Khởi động mùa xuân.

Vấn đề là mùa xuân-ngữ cảnh hỗ trợ (có thêm chú thích bộ nhớ cache Spring) hy vọng CacheManager của ehcache để được vào classpath này: net.sf.ehcache.CacheManager

Tuy nhiên, trong ehcache 3, lớp CacheManager nằm trên một classpath khác: org.ehcache.CacheManager. Vì vậy, về cơ bản hỗ trợ ngữ cảnh mùa xuân không hỗ trợ Ehcache 3. Và bạn sẽ phải sử dụng chú thích JSR-107 trực tiếp, chứ không phải các chú thích do Spring cung cấp.

Nhưng dường như nó hoạt động với Khởi động mùa xuân. Có lẽ có một cách để làm cho nó hoạt động với một ứng dụng Spring chuẩn. Đó là những gì tôi hy vọng. Tôi thực sự muốn sử dụng chú thích riêng của Spring thay vì chú thích JSR-107.

+0

Sử dụng phiên bản ehcahce 3 phù hợp, phiên bản được hỗ trợ. –

+0

Đó là cái nào? Cảm ơn! –

+1

Chỉ cần đọc lại. Khi sử dụng ehcache3 bạn phải sử dụng trừu tượng jcache với Spring (bạn vẫn có thể sử dụng chú thích mùa xuân nhưng để cấu hình bạn phải sử dụng các nhà máy jcache). Khác sử dụng ehcache2. Lỗi của tôi xin lỗi. –

Trả lời

9

Thực ra không có hỗ trợ gốc của Ehcache 3 trong Spring Caching.

Tin tốt là bạn đạt được những gì bạn muốn với JCache support rằng Spring Caching có kể từ Ehcache 3 là compliant JCache implementation. Và một khi bạn có sẵn JCache CacheManager trong ngữ cảnh ứng dụng, không có gì buộc bạn sử dụng chú thích JCache. Bạn có thể tiếp tục sử dụng Spring Caching mà không gặp bất kỳ vấn đề gì.

Bạn có thể tìm thấy bản giới thiệu về số here.

Lưu ý: Tôi đang làm việc trên ehcache

+1

Cảm ơn bạn đã xóa mọi thứ, cuộc trò chuyện đó thực sự hữu ích! Một trong những điều tôi đã làm sai trong thiết lập của tôi là gõ cache của tôi trong cấu hình Ehcache 3 của tôi. Sau đó, khi Spring's JCacheCacheManager gọi getCache (cacheName) trên CacheManager bên dưới (trong trường hợp của tôi là Eh107CacheManager), nó đã kết thúc việc ném IllegalArgumentException: Cache [cacheName] chỉ định các kiểu khóa/giá trị. Sử dụng getCache (String, Class, Class). –

+0

+1, tôi cũng gặp phải vấn đề này, tôi nghĩ rằng đây là một lỗi (hoặc có thể là một tính năng không được hỗ trợ) sử dụng Ehcache3.x trong Spring, chúng ta không thể định nghĩa thuộc tính "key-type" và "value-type" trong ehcache.xml –

+0

Có thể sử dụng Ehcache3 với Spring ACL không? – Sharadr

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