All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.spring.embedded.provider.SpringEmbeddedCacheManagerFactoryBean Maven / Gradle / Ivy

There is a newer version: 15.1.0.Dev03
Show newest version
package org.infinispan.spring.embedded.provider;

import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.spring.embedded.AbstractEmbeddedCacheManagerFactory;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;

/**
 * 

* A {@link FactoryBean FactoryBean} for creating an * {@link SpringEmbeddedCacheManager * SpringEmbeddedCacheManager} instance. The location of the Infinispan configuration * file used to provide the default {@link org.infinispan.configuration.cache.Configuration configuration} for * the EmbeddedCacheManager instance created by this FactoryBean is * {@link #setConfigurationFileLocation(org.springframework.core.io.Resource) configurable}. *

*

* If no configuration file location is set the SpringEmbeddedCacheManager instance * created by this FactoryBean will use Infinispan's default settings. See Infinispan's * documentation for what those default settings * are. *

*

* A user may further customize the SpringEmbeddedCacheManager's configuration using * explicit setters on this FactoryBean. The properties thus defined will be applied * either to the configuration loaded from Infinispan's configuration file in case one has been * specified, or to a configuration initialized with Infinispan's default settings. Either way, the * net effect is that explicitly set configuration properties take precedence over both those loaded * from a configuration file as well as INFINISPAN's default settings. *

*

* In addition to creating an SpringEmbeddedCacheManager this FactoryBean * does also control that SpringEmbeddedCacheManager's * {@link org.infinispan.commons.api.Lifecycle lifecycle} by shutting it down when the enclosing * Spring application context is closed. It is therefore advisable to always use this * FactoryBean when creating an SpringEmbeddedCacheManager. *

* * @author Olaf Bergner * * @see #setConfigurationFileLocation(org.springframework.core.io.Resource) * @see #destroy() * @see SpringEmbeddedCacheManager * @see EmbeddedCacheManager * @see org.infinispan.configuration.cache.Configuration * */ public class SpringEmbeddedCacheManagerFactoryBean extends AbstractEmbeddedCacheManagerFactory implements FactoryBean, InitializingBean, DisposableBean { private static final Log logger = LogFactory.getLog(SpringEmbeddedCacheManagerFactoryBean.class); private SpringEmbeddedCacheManager cacheManager; // ------------------------------------------------------------------------ // org.springframework.beans.factory.InitializingBean // ------------------------------------------------------------------------ /** * @see InitializingBean#afterPropertiesSet() */ @Override public void afterPropertiesSet() throws Exception { logger.info("Initializing SpringEmbeddedCacheManager instance ..."); final EmbeddedCacheManager nativeEmbeddedCacheManager = createBackingEmbeddedCacheManager(); this.cacheManager = new SpringEmbeddedCacheManager(nativeEmbeddedCacheManager); logger.info("Successfully initialized SpringEmbeddedCacheManager instance [" + this.cacheManager + "]"); } // ------------------------------------------------------------------------ // org.springframework.beans.factory.FactoryBean // ------------------------------------------------------------------------ /** * @see FactoryBean#getObject() */ @Override public SpringEmbeddedCacheManager getObject() throws Exception { return this.cacheManager; } /** * @see FactoryBean#getObjectType() */ @Override public Class getObjectType() { return this.cacheManager != null ? this.cacheManager.getClass() : SpringEmbeddedCacheManager.class; } /** * Always returns true. * * @return Always true * * @see FactoryBean#isSingleton() */ @Override public boolean isSingleton() { return true; } // ------------------------------------------------------------------------ // org.springframework.beans.factory.DisposableBean // ------------------------------------------------------------------------ /** * Shuts down the SpringEmbeddedCacheManager instance created by this * FactoryBean. * * @see DisposableBean#destroy() * @see SpringEmbeddedCacheManager#stop() */ @Override public void destroy() throws Exception { // Probably being paranoid here ... if (this.cacheManager != null) { this.cacheManager.stop(); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy