重写的方法作用求注释

public class RequestScopeMessageSource extends AbstractMessageSource {

private static ThreadLocal<Map<String, String>> _messageMap = new ThreadLocal<Map<String, String>>();

public static void setMessage(String code, String message) {
    Map<String, String> messageMap = _messageMap.get();
    if (messageMap == null) {
        messageMap = new HashMap<String, String>();
        _messageMap.set(messageMap);
    }
    messageMap.put(code, message);
}

public static void clear() {
    _messageMap.set(null);
}

@Override
protected String getMessageInternal(String code, Object[] args, Locale locale) {
    if (code == null) {
        return null;
    }
    if (locale == null) {
        locale = Locale.getDefault();
    }
    Object[] argsToUse = args;

    if (!isAlwaysUseMessageFormat() && ObjectUtils.isEmpty(args)) {
        // Optimized resolution: no arguments to apply,
        // therefore no MessageFormat needs to be involved.
        // Note that the default implementation still uses MessageFormat;
        // this can be overridden in specific subclasses.
        String message = resolveCodeWithoutArguments(code, locale);
        if (message != null) {
            return message;
        }
    }

    else {
        // Resolve arguments eagerly, for the case where the message
        // is defined in a parent MessageSource but resolvable arguments
        // are defined in the child MessageSource.
        Map<String, String> messageMap = _messageMap.get();
        if (messageMap != null && messageMap.containsKey(code)) {
            String message = messageMap.get(code);
            return formatMessage(message, args, locale);
        }
    }

    // Not found -> check parent, if any.
    return getMessageFromParent(code, argsToUse, locale);
}

@Override
protected String formatMessage(String message, Object[] args, Locale locale) {
    Object[] argsToUse = resolveArguments(args, locale);

    Format messageFormat;
    if (argsToUse.length == 1 && argsToUse[0] instanceof Map) {
        messageFormat = new TemplatedMessageFormat(message);
        return messageFormat.format(argsToUse[0]);
    }
    else {
        messageFormat = new MessageFormat(message);
        return messageFormat.format(argsToUse);
    }
}

@Override
protected MessageFormat resolveCode(String code, Locale locale) {
    return null;
}

}

这个没什么复杂的逻辑,就是对消息对象进行处理,setMessage把消息放到map里,后面几个就是取出,格式化等

实现你自己的逻辑处理,其实没多复杂的,但是有个注释看起来很方便。

@Override的两个方法不懂,里面的API:比如isAlwaysUseMessageFormat(),Format ,Locale.getDefault()等不知道什么用,求细释,感谢!