此接口是一个用于消息解析的策略接口,其支持消息的参数化和国际化。
Spring提供两种现成的实现类:构建于ResourceBundle基础之上的ResourceBundleMessageSource和ReloadableResourceBundleMessageSource类用于在不重启虚拟器的情况下重新加载消息
public interface MessageSource {
/**
* 解析指定code的消息,如果没有的话返回默认值。
*/
String getMessage(String code, Object[] args, String defaultMessage, Locale locale);
/**
* 解析指定消息,如果没有找到指定code的消息则抛出异常
*/
String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException;
/**
* Try to resolve the message using all the attributes contained within the
* 使用MessageSourceResolvable中包含的所有属性解析消息
* 如果没有找到对应消息,则抛出异常,因为在调用此方法的时候,还不能确定defaultMessage
* 能不能使用
*/
String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;
}