同様のことをするために(Ehcache xmlファイルのいくつかのプレースホルダーを置き換えます-必要に応じて、インポートステートメントは多かれ少なかれプレースホルダーです)、Springsから拡張し(正直に言うと、多かれ少なかれコピーします)EhCacheManagerFactoryBean
、最終的なEhcache xmlを作成しますその場で設定ファイル。
CacheManager
インスタンスを作成するには 、構成を指すafterPropertiesSet()
a を渡すだけです。InputStream
@Override
public void afterPropertiesSet() throws IOException, CacheException {
if (this.configLocation != null) {
InputStreamSource finalConfig = new YourResourceWrapper(this.configLocation); // put your custom logic here
InputStream is = finalConfig.getInputStream();
try {
this.cacheManager = (this.shared ? CacheManager.create(is) : new CacheManager(is));
} finally {
IOUtils.closeQuietly(is);
}
} else {
// ...
}
// ...
}
フィルタリングに関しては、内部的に a を使用しByteArrayResource
て最終的な構成を保持しました。
data = IOUtils.toString(source.getInputStream()); // get the original config (configLocation) as string
// do your string manipulation here
Resource finalConfigResource = new ByteArrayResource(data.getBytes());
「本物の」テンプレートの場合、FreeMarker (Spring がサポートしている) のような本物のテンプレート エンジンを使用して、より凝った処理を行うことも考えられます。