Annotation Type EnableI18N


@API(status=STABLE, since="0.1") @Documented @Retention(RUNTIME) @Target({TYPE,ANNOTATION_TYPE}) @Import(I18nSpringConfigurationSelector.class) public @interface EnableI18N
Annotation for I18N context provider configuration on Spring contexts Java configurations.

To be used together with @Configuration classes as follows, configuring current thread context class loader's I18N context provider using the provided I18N configuration file, if any (see I18nConfiguration):

 @Configuration
 @EnableI18N
 public class AppConfig {

 }

To provide a custom configuration (ignoring the any configuration file if desired) implement I18nSpringConfigurer in the @Configuration class:

 @Configuration
 @EnableI18N
 public class AppConfig implements I18nSpringConfigurer {

     @Override
     public void configureI18nContextProvider(
             @NotNull I18nSpringContextProvider.Builder builder,
             @NotNull ApplicationContext context) {
         // Custom provider configuration
     }

 }

This allows using custom I18nSpringContextProvider extensions:

 @Configuration
 @EnableI18N
 public class AppConfig implements I18nSpringConfigurer {

     @Override
     public @NotNull I18nSpringContextProvider.Builder getI18nContextProviderBuilder() {
         return MyCustomSpringContextProvider.builder();
     }

     @Override
     public void configureI18nContextProvider(
             @NotNull I18nSpringContextProvider.Builder builder,
             @NotNull ApplicationContext context) {
         MyCustomSpringContextProvider.Builder myBuilder = (MyCustomSpringContextProvider.Builder) builder;
         // Custom provider configuration
     }

 }

By default current current thread context class loader's I18N context provider is configured. In J2EE contexts loading Spring context through ContextLoaderListener this means the WAR's class loader. To configure an EAR class loader's I18N context provider (for example in shared parent contexts loaded through ContextLoaderListener.loadParentContext(ServletContext)), set a class in the EAR's libraries (the @Configuration class, for example):

 @Configuration
 @EnableI18N(classLoader=SharedAppConfig.class)
 public class SharedAppConfig {

 }

This allows separate I18N configurations for EAR level thread like asynchronous task executors or JMS listeners threads and WAR and EJB modules if desired.

Since:
0.1
Version:
1.0, 2021-01
Author:
(w) Iker Hernaez
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Returns the class whom ClassLoader to apply the configuration to.
  • Element Details

    • classLoader

      Class<?> classLoader
      Returns the class whom ClassLoader to apply the configuration to.

      Default value Void.class configures the current thread context class loader's I18N context provider.

      See EnableI18N javadoc for additional examples.

      Returns:
      The class whom ClassLoader to apply the configuration to.
      Default:
      java.lang.Void.class