org.springframework.context.i18n

## 类 LocaleContextHolder

- java.lang.Object
- - org.springframework.context.i18n.LocaleContextHolder

-     public abstract class LocaleContextHolder
      extends Object

  Simple holder class that associates a LocaleContext instance with the current thread. The LocaleContext will be inherited by any child threads spawned by the current thread if the `inheritable` flag is set to `true`.

  Used as a central holder for the current Locale in Spring, wherever necessary: for example, in MessageSourceAccessor. DispatcherServlet automatically exposes its current Locale here. Other applications can expose theirs too, to make classes like MessageSourceAccessor automatically use that Locale.

  从以下版本开始:
    1.2
  作者:
    Juergen Hoeller, Nicholas Williams
  另请参阅:
    `LocaleContext`, `MessageSourceAccessor`, `org.springframework.web.servlet.DispatcherServlet`

- - ### 构造器概要

    构造器
    构造器和说明
    `LocaleContextHolder()`

  - ### 方法概要

    所有方法 静态方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `static Locale` | `getLocale()` Return the Locale associated with the current thread, if any, or the system default Locale otherwise.
    `static Locale` | `getLocale(LocaleContext localeContext)` Return the Locale associated with the given user context, if any, or the system default Locale otherwise.
    `static LocaleContext` | `getLocaleContext()` Return the LocaleContext associated with the current thread, if any.
    `static TimeZone` | `getTimeZone()` Return the TimeZone associated with the current thread, if any, or the system default TimeZone otherwise.
    `static TimeZone` | `getTimeZone(LocaleContext localeContext)` Return the TimeZone associated with the given user context, if any, or the system default TimeZone otherwise.
    `static void` | `resetLocaleContext()` Reset the LocaleContext for the current thread.
    `static void` | `setDefaultLocale(Locale locale)` Set a shared default locale at the framework level, as an alternative to the JVM-wide default locale.
    `static void` | `setDefaultTimeZone(TimeZone timeZone)` Set a shared default time zone at the framework level, as an alternative to the JVM-wide default time zone.
    `static void` | `setLocale(Locale locale)` Associate the given Locale with the current thread, preserving any TimeZone that may have been set already.
    `static void` | `setLocale(Locale locale, boolean inheritable)` Associate the given Locale with the current thread, preserving any TimeZone that may have been set already.
    `static void` | `setLocaleContext(LocaleContext localeContext)` Associate the given LocaleContext with the current thread, not exposing it as inheritable for child threads.
    `static void` | `setLocaleContext(LocaleContext localeContext, boolean inheritable)` Associate the given LocaleContext with the current thread.
    `static void` | `setTimeZone(TimeZone timeZone)` Associate the given TimeZone with the current thread, preserving any Locale that may have been set already.
    `static void` | `setTimeZone(TimeZone timeZone, boolean inheritable)` Associate the given TimeZone with the current thread, preserving any Locale that may have been set already.

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 构造器详细资料

    - #### LocaleContextHolder

          public LocaleContextHolder()

  - ### 方法详细资料

    - #### resetLocaleContext

          public static void resetLocaleContext()

      Reset the LocaleContext for the current thread.

    - #### setLocaleContext

          public static void setLocaleContext(@Nullable
                                              LocaleContext localeContext)

      Associate the given LocaleContext with the current thread, not exposing it as inheritable for child threads.

      The given LocaleContext may be a `TimeZoneAwareLocaleContext`, containing a locale with associated time zone information.

      参数:
        `localeContext` - the current LocaleContext, or `null` to reset the thread-bound context
      另请参阅:
        `SimpleLocaleContext`, `SimpleTimeZoneAwareLocaleContext`

    - #### setLocaleContext

          public static void setLocaleContext(@Nullable
                                              LocaleContext localeContext,
                                              boolean inheritable)

      Associate the given LocaleContext with the current thread.

      The given LocaleContext may be a `TimeZoneAwareLocaleContext`, containing a locale with associated time zone information.

      参数:
        `localeContext` - the current LocaleContext, or `null` to reset the thread-bound context
        `inheritable` - whether to expose the LocaleContext as inheritable for child threads (using an `InheritableThreadLocal`)
      另请参阅:
        `SimpleLocaleContext`, `SimpleTimeZoneAwareLocaleContext`

    - #### getLocaleContext

          @Nullable
          public static LocaleContext getLocaleContext()

      Return the LocaleContext associated with the current thread, if any.
      返回:
        the current LocaleContext, or `null` if none

    - #### setLocale

          public static void setLocale(@Nullable
                                       Locale locale)

      Associate the given Locale with the current thread, preserving any TimeZone that may have been set already.

      Will implicitly create a LocaleContext for the given Locale, not exposing it as inheritable for child threads.

      参数:
        `locale` - the current Locale, or `null` to reset the locale part of thread-bound context
      另请参阅:
        `setTimeZone(TimeZone)`, `SimpleLocaleContext.SimpleLocaleContext(Locale)`

    - #### setLocale

          public static void setLocale(@Nullable
                                       Locale locale,
                                       boolean inheritable)

      Associate the given Locale with the current thread, preserving any TimeZone that may have been set already.

      Will implicitly create a LocaleContext for the given Locale.

      参数:
        `locale` - the current Locale, or `null` to reset the locale part of thread-bound context
        `inheritable` - whether to expose the LocaleContext as inheritable for child threads (using an `InheritableThreadLocal`)
      另请参阅:
        `setTimeZone(TimeZone, boolean)`, `SimpleLocaleContext.SimpleLocaleContext(Locale)`

    - #### setDefaultLocale

          public static void setDefaultLocale(@Nullable
                                              Locale locale)

      Set a shared default locale at the framework level, as an alternative to the JVM-wide default locale.

      NOTE: This can be useful to set an application-level default locale which differs from the JVM-wide default locale. However, this requires each such application to operate against locally deployed Spring Framework jars. Do not deploy Spring as a shared library at the server level in such a scenario!

      参数:
        `locale` - the default locale (or `null` for none, letting lookups fall back to `Locale.getDefault()`)
      从以下版本开始:
        4.3.5
      另请参阅:
        `getLocale()`, `Locale.getDefault()`

    - #### getLocale

          public static Locale getLocale()

      Return the Locale associated with the current thread, if any, or the system default Locale otherwise. This is effectively a replacement for `Locale.getDefault()`, able to optionally respect a user-level Locale setting.

      Note: This method has a fallback to the shared default Locale, either at the framework level or at the JVM-wide system level. If you'd like to check for the raw LocaleContext content (which may indicate no specific locale through `null`, use `getLocaleContext()` and call `LocaleContext.getLocale()`

      返回:
        the current Locale, or the system default Locale if no specific Locale has been associated with the current thread
      另请参阅:
        `getLocaleContext()`, `LocaleContext.getLocale()`, `setDefaultLocale(Locale)`, `Locale.getDefault()`

    - #### getLocale

          public static Locale getLocale(@Nullable
                                         LocaleContext localeContext)

      Return the Locale associated with the given user context, if any, or the system default Locale otherwise. This is effectively a replacement for `Locale.getDefault()`, able to optionally respect a user-level Locale setting.
      参数:
        `localeContext` - the user-level locale context to check
      返回:
        the current Locale, or the system default Locale if no specific Locale has been associated with the current thread
      从以下版本开始:
        5.0
      另请参阅:
        `getLocale()`, `LocaleContext.getLocale()`, `setDefaultLocale(Locale)`, `Locale.getDefault()`

    - #### setTimeZone

          public static void setTimeZone(@Nullable
                                         TimeZone timeZone)

      Associate the given TimeZone with the current thread, preserving any Locale that may have been set already.

      Will implicitly create a LocaleContext for the given Locale, not exposing it as inheritable for child threads.

      参数:
        `timeZone` - the current TimeZone, or `null` to reset the time zone part of the thread-bound context
      另请参阅:
        `setLocale(Locale)`, `SimpleTimeZoneAwareLocaleContext.SimpleTimeZoneAwareLocaleContext(Locale, TimeZone)`

    - #### setTimeZone

          public static void setTimeZone(@Nullable
                                         TimeZone timeZone,
                                         boolean inheritable)

      Associate the given TimeZone with the current thread, preserving any Locale that may have been set already.

      Will implicitly create a LocaleContext for the given Locale.

      参数:
        `timeZone` - the current TimeZone, or `null` to reset the time zone part of the thread-bound context
        `inheritable` - whether to expose the LocaleContext as inheritable for child threads (using an `InheritableThreadLocal`)
      另请参阅:
        `setLocale(Locale, boolean)`, `SimpleTimeZoneAwareLocaleContext.SimpleTimeZoneAwareLocaleContext(Locale, TimeZone)`

    - #### setDefaultTimeZone

          public static void setDefaultTimeZone(@Nullable
                                                TimeZone timeZone)

      Set a shared default time zone at the framework level, as an alternative to the JVM-wide default time zone.

      NOTE: This can be useful to set an application-level default time zone which differs from the JVM-wide default time zone. However, this requires each such application to operate against locally deployed Spring Framework jars. Do not deploy Spring as a shared library at the server level in such a scenario!

      参数:
        `timeZone` - the default time zone (or `null` for none, letting lookups fall back to `TimeZone.getDefault()`)
      从以下版本开始:
        4.3.5
      另请参阅:
        `getTimeZone()`, `TimeZone.getDefault()`

    - #### getTimeZone

          public static TimeZone getTimeZone()

      Return the TimeZone associated with the current thread, if any, or the system default TimeZone otherwise. This is effectively a replacement for `TimeZone.getDefault()`, able to optionally respect a user-level TimeZone setting.

      Note: This method has a fallback to the shared default TimeZone, either at the framework level or at the JVM-wide system level. If you'd like to check for the raw LocaleContext content (which may indicate no specific time zone through `null`, use `getLocaleContext()` and call `TimeZoneAwareLocaleContext.getTimeZone()` after downcasting to `TimeZoneAwareLocaleContext`.

      返回:
        the current TimeZone, or the system default TimeZone if no specific TimeZone has been associated with the current thread
      另请参阅:
        `getLocaleContext()`, `TimeZoneAwareLocaleContext.getTimeZone()`, `setDefaultTimeZone(TimeZone)`, `TimeZone.getDefault()`

    - #### getTimeZone

          public static TimeZone getTimeZone(@Nullable
                                             LocaleContext localeContext)

      Return the TimeZone associated with the given user context, if any, or the system default TimeZone otherwise. This is effectively a replacement for `TimeZone.getDefault()`, able to optionally respect a user-level TimeZone setting.
      参数:
        `localeContext` - the user-level locale context to check
      返回:
        the current TimeZone, or the system default TimeZone if no specific TimeZone has been associated with the current thread
      从以下版本开始:
        5.0
      另请参阅:
        `getTimeZone()`, `TimeZoneAwareLocaleContext.getTimeZone()`, `setDefaultTimeZone(TimeZone)`, `TimeZone.getDefault()`