Utilisez NCache en tant que cache de données Spring

NCache, en tant que cache distribué en mémoire, extrêmement rapide et évolutif, fournit une intégration avec Spring pour améliorer les performances de l'application en réduisant les déplacements de données coûteux.

Spring est un conteneur et un framework léger d'injection de dépendances et de développement orienté aspect pour Java. Il vous permet de simplifier le développement de votre application et d'intégrer des éléments réutilisables dans votre application, comme NCache.

 

Pourquoi intégrer votre application Spring avec NCache?

Spring lui-même réduit la complexité globale du développement Java en assurant la cohésion et le couplage lâche, mais il crée un trafic élevé dans ces applications. Ces applications Spring à fort trafic sont confrontées à un problème d’évolutivité important. Par conséquent, un cache distribué en mémoire répondant à leurs exigences d’évolutivité est essentiel.

Bien que ces applications puissent évoluer en ajoutant davantage de serveurs à leur batterie de serveurs, malheureusement, les bases de données ne peuvent pas évoluer pour gérer des charges aussi élevées. Pour ces scénarios, un cache distribué est le meilleur pour gérer la base de données évolutivité problème.

Par conséquent, la meilleure option est NCache. C'est un système rapide, en mémoire, magasin clé-valeur cache distribué, qui a implémenté un module de mise en cache Spring, rendant vos applications Spring évolutives et distribuées. Il décharge votre base de données en réduisant les déplacements coûteux de la base de données qui entraînent des problèmes d'évolutivité et offre des performances plus rapides.

 

Comment configurer l'application Spring à utiliser NCache

NCache fournit la prise en charge de la mise en cache Spring des deux manières suivantes :

  • Grâce à la Fournisseur de mise en cache Spring, NCache agit comme un gestionnaire de cache pour votre application Spring.
  • Grâce à la Fournisseur de mise en cache JCache, NCache utilise la fonctionnalité prise en charge de JCache.
 

Ajout de dépendances

Pour configurer votre application Spring avec, vous devez d'abord ajouter toutes les dépendances Maven requises avec Spring et NCache bereitzustellen.

<dependency>
    <groupId>com.alachisoft.ncache</groupId>
    <artifactId>ncache-spring</artifactId>
    <version>x.x.x</version>
</dependency>
 

Configurer l'application Spring via le fournisseur de mise en cache Spring

Après avoir ajouté ces dépendances, définissez les beans dans votre application Spring - via la définition de bean basée sur Java ou XML.

Définition du bean basé sur Java :
Pour définir des beans à l'aide d'une définition basée sur Java, vous devez ajouter le @Haricot annotation dans la classe CachingConfiguration, où la méthode setConfigFile spécifiera le chemin d'accès à votre ncache-fichier spring.xml. Pour des informations détaillées, reportez-vous à Bean basé sur Java Définition.

@Configuration
class CachingConfiguration {
    @Bean
    public CacheManager cacheManager() {
        String resource = Path.of(System.getenv("NCHOME"), "config/ncache-spring.xml").toString();

        SpringConfigurationManager springConfigurationManager = new SpringConfigurationManager();
        springConfigurationManager.setConfigFile(resource);

        NCacheCacheManager cacheManager = new NCacheCacheManager();
        cacheManager.setSpringConfigurationManager(springConfigurationManager);

        return cacheManager;
    }
}

Définition du bean basé sur XML :
Pour définir des beans à l'aide d'une définition basée sur XML, vous devez ajouter un fichier XML qui active la mise en cache et spécifie NCache en tant que gestionnaire de cache. Vous devez définir des balises Bean pour le cacheManager et NCachePanneau de configuration. De plus, vous devez spécifier les propriétés suivantes pour cacheManager.

  • springConfigurationManager : Référence à NCache bean du gestionnaire de configuration.
  • logFilePath : Chemin complet pour les journaux du gestionnaire de cache.
<bean id="cacheManager" class="com.alachisoft.integrations.spring.NCacheCacheManager">
	<property name="springConfigurationManager" ref="NCacheConfigurationManager"/>
	<property name="logFilePath" value=" C:\Program Files\NCache\log-files\CustomerDBSpringLogs"/>
</bean>
<bean id="NCacheConfigurationManager" class="com.alachisoft.integrations.spring.configuration.SpringConfigurationManager">
        <property name="configFile" value="ncache-spring.xml">
</bean>

Pour plus de détails, rendez-vous sur Définition de bean basée sur XML.

De plus, vous devez configurer vos caches dans le ncache-fichier spring.xml pour le NCache Centre de gestion. Chaque cache nécessite sa propre définition avec son propre ensemble de propriétés dans ce fichier. Par exemple:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application-config default-cache-name="books">
  <caches>
    <cache name="books" ncacheid-instance="democache" priority="normal" expiration-type="absolute" expiration-period="300"/>
  </caches>
</application-config>
 

Configurer les applications Spring via le fournisseur de mise en cache JCache

Spring prend également en charge les fournisseurs de mise en cache compatibles JCache où vous pouvez utiliser JCache dans votre application Spring avec NCache. Tout d'abord, ajoutez les dépendances Maven pour Spring, NCacheet JCache. Après avoir ajouté les dépendances, configurez les caches :

  • Ajouter spring.cache.cache-noms tag dans le application.propriétés déposer. Le nom du cache doit être le même que celui configuré dans le NCache Centre de gestion.
  • Configurez votre cache via le JCacheManagerCustomizer classe qui initialise le cache au moment de l'exécution avec la configuration souhaitée.

Pour plus d'informations, vous pouvez consulter notre Documents de printemps JCache.

 

Identification des méthodes devant être mises en cache

Une fois que vous avez activé la mise en cache via les deux configurations définies ci-dessus, l'étape suivante consiste à lier ces comportements de mise en cache à leurs méthodes respectives à utiliser. NCache en tant que fournisseur de mise en cache pour Spring.

Vous pouvez lier les comportements de mise en cache à leurs méthodes de deux manières. L'un est à travers Mise en cache des annotations.

// BookController.java
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    // Get a Spring Service to save objects in the DB. This also caches them with 5min absolute (TTL) expiration.
    BookService service = context.getBean(BookService.class);
    service.save(new Book(18001, "The Second Machine Age", "Erik Brynjolfsson, Andrew McAfee", new Date(2014, 0, 20)));

    // Print all saved books details
    printBooks(service.listAll());

    // Use Spring Service to get a book from the DB. It actually comes from the cache
    Book foundBook = service.findBookByIsbn(18001);
    printBookDetails(foundBook);

    foundBook.setAuthor("New Author");
    Book UpdatedBook = service.update(foundBook);

    printBookDetails(UpdatedBook);
    context.close();
    System.exit(0);
    }

// BookService.java
@Service
class BookService {
    @Autowired
    private BookRepository repo;

    public List<Book> listAll() {
        return repo.findAll();
    }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book save(Book book) { return repo.save(book); }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book update(Book book) { return repo.save(book); }

    @Cacheable(value = "demoCache", key = "#id")
    public Book get(int id) {
        return repo.findById(id);
    }

    @Cacheable(value = "demoCache", key = "#isbn")
    public Book findBookByIsbn(long isbn) {
        return repo.findBookByIsbn(isbn);
    }

    @CacheEvict(value = "demoCache", allEntries = true)
    public void delete(int id) {
        repo.deleteById(id);
    }
}

Si vous n'utilisez pas d'annotations, alors Mise en cache déclarative basée sur XML peut être utilisé lorsque vous pouvez spécifier la méthode cible et les directives de mise en cache en externe.

<!-- the service we want to make cacheable -->
<bean id="bookService" class="x.y.service.BookService"/>
<!-- cache definitions -->
<cache:advice id="booksCacheAdvice" cache-manager="cacheManager">
    <cache:caching cache="demoCache">
        <cache:cacheable method="getBookNameByIsbn" key="#isbn"/>
        <cache:cache-evict method="loadBooks" all-entries="true"/>
    </cache:caching>
</cache:advice>

Que faire ensuite?

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.