1. 程式人生 > 實用技巧 >Spring Cache整合Apache ignite

Spring Cache整合Apache ignite

學校的一個小專案,在內卷的大環境下必須得整點花活。

Spring Cache大夥應該都比較熟悉,這裡主要說一下怎麼把ignite整合進去做cache的provider

首先引入相關依賴(注意,本機上需要安裝apache ignite並配置環境變數,注意其版本應與此依賴中的版本對應),
其中2.8.1版本的ignite需要手動切換一下h2版本號(之前有一篇文章提過)

<properties>
    <ignite.version>2.8.1</ignite.version>
    <h2.version>1.4.197</h2.version>
</properties>

<!--    spring-cache with apache ignite core    -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-core</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-indexing</artifactId>
    <version>${ignite.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.ignite</groupId>
    <artifactId>ignite-spring-data_2.2</artifactId>
    <version>${ignite.version}</version>
</dependency>

配置我依然採用程式碼裡配置,大概如下(具體屬性俺也不是很清楚,畢竟英語競賽連個獎都沒混到,自己去官網看文件吧):

package com.iamwxc.bookstore.configuration;

import org.apache.ignite.cache.spring.SpringCacheManager;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * @author https://github.com/anlowee
 */
@Configuration
@EnableCaching
public class IgniteCacheConfiguration {

    @Bean
    public CacheManager cacheManager() {
        SpringCacheManager cacheManager = new SpringCacheManager();
        cacheManager.setConfiguration(igniteConfiguration());
        return cacheManager;
    }

    @Bean
    public IgniteConfiguration igniteConfiguration() {
        IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
        igniteConfiguration.setClientMode(false);
        igniteConfiguration.setCacheConfiguration(cacheConfiguration());
        return igniteConfiguration;

    }

    @Bean
    public CacheConfiguration[] cacheConfiguration() {
        List<CacheConfiguration> cacheConfigurations = new ArrayList<>();

        cacheConfigurations.add(new CacheConfiguration("user"));
        cacheConfigurations.add(new CacheConfiguration("bookLikeAndWant"));

        return cacheConfigurations.toArray(new CacheConfiguration[cacheConfigurations.size()]);
    }

}

然後就可以在工程裡隨意操作了(一直很喜歡spring這種load-core的模式)