3

Spring と Ehcache で使用することを目的とした jar を作成しています。Spring では要素ごとにキャッシュを定義する必要があるため、できればアプリのプライマリ Ehcache 構成にインポートできる jar 内のリソースとして、jar 用に Ehcache を定義することを計画していました。ただし、Ehcache 構成ファイルの例を読んでも、Google 検索でも、サブ Ehcache 構成ファイルをインポートする方法は見つかりませんでした。

サブ Ehcache 構成ファイルをインポートする方法はありますか、またはこの問題を解決する他の方法はありますか?

4

1 に答える 1

1

同様のことをするために(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 がサポートしている) のような本物のテンプレート エンジンを使用して、より凝った処理を行うことも考えられます。

于 2012-06-29T06:56:14.460 に答える