public class DataSourceMessageSource
extends org.springframework.context.support.AbstractMessageSource
implements org.springframework.beans.factory.InitializingBean
本クラスはクラスロード時にDBを参照し、DB中のメッセージリソースからメッセージ もしくはメッセージフォーマットを決定するクラスである。 また、国際化に対応しており、言語コード、国コード、バリアントコードによる ロケール判別が可能である。
使用方法
<bean id = "messageSource"
class = "jp.terasoluna.fw.message.DataSourceMessageSource">
<property name = "DBMessageResourceDAO">
<ref bean = "dBMessageResourceDAO"></ref>
</property>
</bean>
解説
<bean id = "messageSource"
class = "jp.terasoluna.fw.message.DataSourceMessageSource">
<property name = "DBMessageResourceDAO">
<ref bean = "dBMessageResourceDAO"></ref>
</property>
<property name = "defaultLocale">
<value>ja</value>
</property>
</bean>
解説| 修飾子とタイプ | フィールドと説明 |
|---|---|
protected Map<Locale,Properties> |
cachedMergedProperties
ロケール毎にメッセージコードとメッセージをマップで保持する。
|
protected Map<String,Map<Locale,MessageFormat>> |
cachedMessageFormats
メッセージコード毎にロケールとメッセージフォーマットをマップで保持する。
|
protected DBMessageResourceDAO |
dbMessageResourceDAO
メッセージリソースを取得するDAO。
|
protected Locale |
defaultLocale
ロケールが指定されていない場合のデフォルトロケール。
|
| コンストラクタと説明 |
|---|
DataSourceMessageSource() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
void |
afterPropertiesSet()
Webアプリケーションコンテキスト起動時に実行される。
|
protected Locale |
createLocale(DBMessage message)
Localeオブジェクトを生成する。
|
protected List<Locale> |
getAlternativeLocales(Locale locale)
メッセージを決定する際のキーを生成する。
|
protected MessageFormat |
getMessageFormat(String code,
Locale locale)
引数として渡されたメッセージコードとロケールからメッセージフォーマット
を決定する。
|
protected Properties |
getMessages(Locale locale)
ロケールに対応する全てのメッセージを返却する。
|
protected String |
internalResolveCodeWithoutArguments(String code,
Locale locale)
メッセージコードとロケールからメッセージを決定する。
|
protected void |
mapMessage(DBMessage message)
メッセージリソースをロケール別に整理し、メッセージコードとメッセージ本体
をセットにして、ハッシュテーブルに格納する。
|
protected void |
readMessagesFromDataSource()
DAOからメッセージリソースを取得し、整理する。
|
void |
reloadDataSourceMessage()
メッセージリソースをリロードする。
|
protected MessageFormat |
resolveCode(String code,
Locale locale)
引数として渡されたメッセージコードとロケールからメッセージフォーマットを
決定し、メッセージフォーマットを返却する。
|
protected String |
resolveCodeWithoutArguments(String code,
Locale locale)
引数として渡されたメッセージコードとロケールからメッセージを決定し、
メッセージを返却する。
|
void |
setDbMessageResourceDAO(DBMessageResourceDAO dbMessageResourceDAO)
DBMessageResourceDAOを設定する。
|
void |
setDefaultLocale(Locale defaultLocale)
デフォルトロケールを設定する。
|
getDefaultMessage, getMessage, getMessage, getMessage, getMessageFromParent, getMessageInternal, getParentMessageSource, isUseCodeAsDefaultMessage, resolveArguments, setParentMessageSource, setUseCodeAsDefaultMessageprotected final Map<String,Map<Locale,MessageFormat>> cachedMessageFormats
protected Map<Locale,Properties> cachedMergedProperties
protected Locale defaultLocale
protected DBMessageResourceDAO dbMessageResourceDAO
public void setDefaultLocale(Locale defaultLocale)
defaultLocale - デフォルトのロケール。AbstractMessageSource.getMessageInternal(java.lang.String, java.lang.Object[], java.util.Locale),
Locale.getDefault()public void setDbMessageResourceDAO(DBMessageResourceDAO dbMessageResourceDAO)
dbMessageResourceDAO - 全てのメッセージリソースを取得するDAOpublic void afterPropertiesSet()
afterPropertiesSet インタフェース内 org.springframework.beans.factory.InitializingBeancachedMergedPropertiespublic void reloadDataSourceMessage()
protected void readMessagesFromDataSource()
protected void mapMessage(DBMessage message)
message - メッセージリソースを格納したDBMessageオブジェクト。protected Locale createLocale(DBMessage message)
message - メッセージリソースIllegalArgumentException - メッセージコード及びメッセージが存在するメッセージリソースに
ロケールが設定されていない。かつ、デフォルトロケールも設定出来ない
場合のエラー。protected Properties getMessages(Locale locale)
locale - メッセージのロケール。protected String resolveCodeWithoutArguments(String code, Locale locale)
resolveCodeWithoutArguments クラス内 org.springframework.context.support.AbstractMessageSourcecode - メッセージコードlocale - メッセージのロケールprotected String internalResolveCodeWithoutArguments(String code, Locale locale)
code - メッセージコードlocale - メッセージのロケールprotected List<Locale> getAlternativeLocales(Locale locale)
locale - ロケールオブジェクトprotected MessageFormat resolveCode(String code, Locale locale)
resolveCode クラス内 org.springframework.context.support.AbstractMessageSourcecode - メッセージコードlocale - メッセージのロケールprotected MessageFormat getMessageFormat(String code, Locale locale)
code - メッセージコードlocale - メッセージのロケールCopyright © 2014. All Rights Reserved.