Spring messagesource動的指定リソースファイル

1676 ワード

プロジェクトはmavenモジュール化されたプロジェクトを使用するため、各モジュールはjarにパッケージ化され、最終的にはweb導入可能なプロジェクトに依存する.プロジェクトではspring messagesourceリソースの国際化が行われているため、messagesourceのspringでの構成はこの1部のみであり、リソースファイルを動的に指定できるようにするため、ResourceBundleMessageSourceを拡張した.コードは次のとおりです.
public class GapResourceBundleMessageSource extends ResourceBundleMessageSource {

	@Override
	public void setBasenames(final String ... basenames) {
		List<String> list = new LinkedList<String>();
		if (ArrayUtils.isNotEmpty(basenames)) {
			for (String baseName : basenames) {
				if (StringUtils.isNotEmpty(baseName)) {
					if (baseName.contains(",")) {
						String[] bases = baseName.split(",");
						for (String base : bases) {
							list.add(base);
						}
					} else {
						list.add(baseName);
					}
				}
			}
		}
		String[] bases = new String[list.size()];
		list.toArray(bases);
		list.clear();
		list = null;
		super.setBasenames(bases);
	}
}

プロファイルでは、次のように構成されています.
   
<bean id="messageSource" class="cn.evun.gap.core.spring.GapResourceBundleMessageSource">
		<property name="basenames">
			<list><value>${i18n.message}</value></list>
		</property>
		<property name="useCodeAsDefaultMessage" value="true" />
</bean>

ただし、i 18 n.Messageのフォーマットはi 18 n.message=i18n/aaa,i18n/bbb,i18n/ccc....
これにより、i 18 nを修正することができる.Messsageの値は、元のプロファイルを変更することなく、リソースファイルを動的に指定します.