How to load data from database to Ehcache when the application starts

I want to load the data from database into cache memory using Spring ehCache when the application starts i.e when the server starts before any other method is called. I dont want to use a constructor. Please help me.

Upvotes: 3

Views: 9148

Answers (2)

Leon
Leon

Reputation: 12481

As @LouisJacomet mentioned you need to implement BootstrapCacheLoader, this implementation is what will do your preloading. Since you are using Spring you will create a bean of the implemented class and call EhCacheFactoryBean.setBootstrapCacheLoader so that the cache factory is aware of the loader.

Here is a link with a complete implementation. https://javaglobin.wordpress.com/2013/11/13/declarative-caching-with-spring/

Have a look at MyBootstrapCacheLoaderFactory and also note that there is a EhCacheFactoryBean bean that is called ehCacheFactory.

Upvotes: 3

Louis Jacomet
Louis Jacomet

Reputation: 14500

This is exactly what the BootstrapCacheLoader will do for you.

Have a look at the following documentation entry.

It seems this is fully integrated in the Spring Ehcache bridge - see here

In short the steps to get there are:

  1. Determine how you will know what needs to be loaded at startup - that is your set of keys
  2. Implement your own BootstrapCacheLoader that will use the set to load eagerly all entries, async or sync at cache initialisation time.
  3. Wire it using a BootstrapCacheLoaderFactory through XML (Ehcache) or even directly (Spring)

Upvotes: 4

Related Questions