2016-03-10 112 views
5

Tôi đang tìm 2 điều:Khởi động mùa xuân - Cách tắt @Cachable trong khi phát triển?

  1. Làm thế nào để vô hiệu hóa tất cả các bộ nhớ đệm trong phát triển với khởi động mùa xuân "dev" profile. Không có đường may là một thiết lập chung để tắt tất cả trong application.properties. Cách dễ nhất là gì?

  2. Cách tắt bộ nhớ đệm cho một phương pháp cụ thể? Tôi cố gắng để sử dụng SpEl như thế này:

    @Cacheable(value = "complex-calc", condition = "#{${spring.profiles.active} != 'dev'}") public String someBigCalculation(String input){ ... }

Nhưng tôi có thể lấy nó để làm việc. Có một vài câu hỏi về SO liên quan đến điều này, nhưng họ tham khảo cấu hình XML hoặc những thứ khác, nhưng tôi đang sử dụng Spring Boot 1.3.3 và điều này sử dụng cấu hình tự động.

Tôi không muốn quá phức tạp.

+7

thêm 'spring.cache.type = NONE' vào' application-dev.properties' của bạn. –

+0

'spring.cache.type = NONE' không chuyển đổi bộ nhớ đệm, nó ngăn không cho mọi thứ được lưu trữ. tức là nó vẫn bổ sung 27 lớp ngăn xếp AOP/interceptor vào chương trình của bạn, nó chỉ là nó không làm bộ nhớ đệm. Nó phụ thuộc vào ý nghĩa của nó bằng cách "tắt nó đi". –

Trả lời

13

Loại bộ nhớ cache theo mặc định tự động được phát hiện và định cấu hình. Tuy nhiên, bạn có thể chỉ định loại bộ nhớ cache để sử dụng bằng cách thêm spring.cache.type vào cấu hình của mình. Để tắt tính năng này, hãy đặt giá trị thành NONE.

Như bạn muốn làm điều đó cho một cấu hình cụ thể thêm nó vào mà tiểu application.properties trong trường hợp này thay đổi application-dev.properties và thêm

spring.cache.type=NONE 

này sẽ vô hiệu hóa bộ nhớ đệm.

+1

Còn câu hỏi thứ hai của tôi khi sử dụng SpEl thì sao? Có một số phương pháp cụ thể mà tôi không muốn lưu bộ nhớ đệm trong khi phát triển. – Wouter

2

Đối với câu hỏi thứ hai của bạn làm điều gì đó như thế này:

Viết một phương pháp xác định có hay không một hồ sơ đặc biệt là hoạt động (môi trường được tiêm của bạn Môi trường)

boolean isProfileActive(String profile) { 
    return Arrays.asList(environment.getActiveProfiles()).contains(profile); 
} 

sau đó sử dụng cho spel của bạn điều kiện trên chú thích có thể lưu vào bộ nhớ cache

-1

nếu đó là dự án SpringBoot, hãy nhận xét @EnableCaching trong lớp Ứng dụng, ví dụ:

//@EnableCaching 
@SpringBootApplication 
public class CacheapplicationApplication{ 
    public static void main(String[] args){} 

} 
+1

Chà, bạn cũng có thể xóa tất cả mã được đặt cho bộ nhớ đệm ... – T3rm1

+0

hãy xem câu hỏi .. mã không được thay đổi theo env. nó nên được định cấu hình – navaltiger

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