Java統合スプリングキャッシュのコード例

Y2J
リリース: 2017-05-13 10:29:50
オリジナル
1595 人が閲覧しました

この記事では、Springboot に統合された Spring Cache のサンプル コードを主に紹介します。編集者がそれを参考として共有します。この記事では、Springboot でデフォルトの Spring キャッシュを使用する方法を紹介します。

Spring では、さまざまなキャッシュ テクノロジを統合するために CacheManager と Cache インターフェイスが定義されています。たとえば、JCache、EhCache、Hazelcast、Guava、Redis などです。 Spring を使用して Cache を統合する場合、実装された CacheManager の Bean を登録する必要があります。

Spring Boot は、JcacheCacheConfiguration、EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration などを自動的に構成します。

ConcurrenMapCacheManager がデフォルトで使用されます

他のサードパーティのキャッシュ依存関係を使用しない場合、springboot は自動的に ConcurrenMapCacheManager をキャッシュ マネージャーとして使用します。 environmentの依存関係introduce introduce spring-boot-starter-cache環境環境依存関係は、pomファイルのファイル:book book data cassion layersを作成します。データアクセスインターフェース

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
ログイン後にコピー

操作

MySQL

、nosqlなどの非常に複雑なデータクエリ操作を書くことができます。この栗を実証するために、スレッドに対して遅延操作のみを実行し、それをデータベースへのクエリの時間と見なしました。

インターフェイス クラスを実装します:


public class Book {

private String isbn;
private String title;

public Book(String isbn, String title) {
 this.isbn = isbn;
 this.title = title;
}
….getter 
….setter

}
ログイン後にコピー

テスト クラス

public interface BookRepository {

 Book getByIsbn(String isbn);

}
ログイン後にコピー

プログラムを開始すると、プログラムがコンソールに順番に出力されることがわかります:

@Component
public class SimpleBookRepository implements BookRepository {

 @Override

 public Book getByIsbn(String isbn) {
  simulateSlowService();
  return new Book(isbn, "Some book");
 }

 // Don&#39;t do this at home
 private void simulateSlowService() {
  try {
   long time = 3000L;
   Thread.sleep(time);
  } catch (InterruptedException e) {
   throw new IllegalStateException(e);
  }
 }

}
ログイン後にコピー

プログラムがログの行を 3 秒間順番に出力します。現時点では、キャッシュ テクノロジは有効になっていません。

キャッシュ技術を有効にするプログラムのエントリに @EnableCaching を追加して、キャッシュ技術を有効にします:

@Component
public class AppRunner implements CommandLineRunner {

 private static final Logger logger = LoggerFactory.getLogger(AppRunner.class);

 private final BookRepository bookRepository;

 public AppRunner(BookRepository bookRepository) {
  this.bookRepository = bookRepository;
 }

 @Override
 public void run(String... args) throws Exception {
  logger.info(".... Fetching books");
  logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
  logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
  logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
  logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
  logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
  logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
 }

}
ログイン後にコピー

@Cacheable("books を getByIsbn に追加するなど、キャッシュが必要な場所に @Cacheable アノテーションを追加します) () メソッド ")、このメソッドはキャッシュ戦略を有効にします。キャッシュにこのデータがある場合、データベースへのクエリを待たずにデータが直接返されます。

2014-06-05 12:15:35.783 … : …. Fetching books

2014-06-05 12:15:40.783 … : isbn-1234 –> >Book{isbn=&#39;isbn-1234&#39;, title=&#39;Some book&#39;}

2014-06-05 12:15:43.784 … : isbn-1234 –>Book{isbn=&#39;isbn-1234&#39;, title=&#39;Some book&#39;}

2014-06-05 12:15:46.786 … : isbn-1234 –>Book{isbn=&#39;isbn-1234&#39;, title=&#39;Some book&#39;}
ログイン後にコピー

この時点でプログラムを再度開始すると、プログラムが次のように出力することがわかります:

@SpringBootApplication
@EnableCaching
public class DemoApplication {

 public static void main(String[] args) {
  SpringApplication.run(DemoApplication.class, args);
 }
}
ログイン後にコピー

最初の 2 つのデータのみが出力され、プログラムは 3 秒間待機し、後続のデータは即座に出力されます。コンソールに出力され、キャッシュが機能したことがわかります。

【関連推奨事項】

1.

特別な推奨事項

:

「php Programmer Toolbox」V0.1 バージョンのダウンロード

2.

Java の無料ビデオチュートリアル


3.

以上がJava統合スプリングキャッシュのコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート