Package org.springframework.context

# Interface MessageSource

All Known Subinterfaces:
  `ApplicationContext`, `ConfigurableApplicationContext`, `HierarchicalMessageSource`

All Known Implementing Classes:
  `AbstractApplicationContext`, `AbstractMessageSource`, `AbstractRefreshableApplicationContext`, `AbstractRefreshableConfigApplicationContext`, `AbstractResourceBasedMessageSource`, `AbstractXmlApplicationContext`, `AnnotationConfigApplicationContext`, `ClassPathXmlApplicationContext`, `DelegatingMessageSource`, `FileSystemXmlApplicationContext`, `GenericApplicationContext`, `GenericGroovyApplicationContext`, `GenericXmlApplicationContext`, `ReloadableResourceBundleMessageSource`, `ResourceBundleMessageSource`, `StaticApplicationContext`, `StaticMessageSource`

public interface MessageSource
Strategy interface for resolving messages, with support for the parameterization and internationalization of such messages.

Spring provides two out-of-the-box implementations for production:

- `ResourceBundleMessageSource`: built on top of the standard `ResourceBundle`, sharing its limitations.
- `ReloadableResourceBundleMessageSource`: highly configurable, in particular with respect to reloading message definitions.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  - `ResourceBundleMessageSource`
  - `ReloadableResourceBundleMessageSource`

## Method Summary

Modifier and Type
Method
Description
`String`
`getMessage(String code, Object[] args, String defaultMessage, Locale locale)`
Try to resolve the message.
`String`
`getMessage(String code, Object[] args, Locale locale)`
Try to resolve the message.
`String`
`getMessage(MessageSourceResolvable resolvable, Locale locale)`
Try to resolve the message using all the attributes contained within the `MessageSourceResolvable` argument that was passed in.

## Method Details

### getMessage

@Nullable String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale)
Try to resolve the message. Return default message if no message was found.

Parameters:
  `code` - the message code to look up, for example, 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
  `args` - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or `null` if none
  `defaultMessage` - a default message to return if the lookup fails
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message if the lookup was successful, otherwise the default message passed as a parameter (which may be `null`)
See Also:
  - `getMessage(MessageSourceResolvable, Locale)`
  - `MessageFormat`

### getMessage

String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException
Try to resolve the message. Treat as an error if the message can't be found.

Parameters:
  `code` - the message code to look up, for example, 'calculator.noRateSet'. MessageSource users are encouraged to base message names on qualified class or package names, avoiding potential conflicts and ensuring maximum clarity.
  `args` - an array of arguments that will be filled in for params within the message (params look like "{0}", "{1,date}", "{2,time}" within a message), or `null` if none
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message (never `null`)
Throws:
  `NoSuchMessageException` - if no corresponding message was found
See Also:
  - `getMessage(MessageSourceResolvable, Locale)`
  - `MessageFormat`

### getMessage

String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException
Try to resolve the message using all the attributes contained within the `MessageSourceResolvable` argument that was passed in.

NOTE: We must throw a `NoSuchMessageException` on this method since at the time of calling this method we aren't able to determine if the `defaultMessage` property of the resolvable is `null` or not.

Parameters:
  `resolvable` - the value object storing attributes required to resolve a message (may include a default message)
  `locale` - the locale in which to do the lookup
Returns:
  the resolved message (never `null` since even a `MessageSourceResolvable`-provided default message needs to be non-null)
Throws:
  `NoSuchMessageException` - if no corresponding message was found (and no default message was provided by the `MessageSourceResolvable`)
See Also:
  - `MessageSourceResolvable.getCodes()`
  - `MessageSourceResolvable.getArguments()`
  - `MessageSourceResolvable.getDefaultMessage()`
  - `MessageFormat`