Spring messagesource動的指定リソースファイル
1676 ワード
プロジェクトはmavenモジュール化されたプロジェクトを使用するため、各モジュールはjarにパッケージ化され、最終的にはweb導入可能なプロジェクトに依存する.プロジェクトではspring messagesourceリソースの国際化が行われているため、messagesourceのspringでの構成はこの1部のみであり、リソースファイルを動的に指定できるようにするため、ResourceBundleMessageSourceを拡張した.コードは次のとおりです.
プロファイルでは、次のように構成されています.
ただし、i 18 n.Messageのフォーマットはi 18 n.message=i18n/aaa,i18n/bbb,i18n/ccc....
これにより、i 18 nを修正することができる.Messsageの値は、元のプロファイルを変更することなく、リソースファイルを動的に指定します.
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の値は、元のプロファイルを変更することなく、リソースファイルを動的に指定します.