org.springframework.context.support.ResourceBundleMessageSource类的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(14.1k)|赞(0)|评价(0)|浏览(289)

本文整理了Java中org.springframework.context.support.ResourceBundleMessageSource类的一些代码示例,展示了ResourceBundleMessageSource类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ResourceBundleMessageSource类的具体详情如下:
包路径:org.springframework.context.support.ResourceBundleMessageSource
类名称:ResourceBundleMessageSource

ResourceBundleMessageSource介绍

[英]org.springframework.context.MessageSource implementation that accesses resource bundles using specified basenames. This class relies on the underlying JDK's java.util.ResourceBundle implementation, in combination with the JDK's standard message parsing provided by java.text.MessageFormat.

This MessageSource caches both the accessed ResourceBundle instances and the generated MessageFormats for each message. It also implements rendering of no-arg messages without MessageFormat, as supported by the AbstractMessageSource base class. The caching provided by this MessageSource is significantly faster than the built-in caching of the java.util.ResourceBundle class.

The basenames follow java.util.ResourceBundle conventions: essentially, a fully-qualified classpath location. If it doesn't contain a package qualifier (such as org.mypackage), it will be resolved from the classpath root. Note that the JDK's standard ResourceBundle treats dots as package separators: This means that "test.theme" is effectively equivalent to "test/theme".

On the classpath, bundle resources will be read with the locally configured #setDefaultEncoding: by default, ISO-8859-1; consider switching this to UTF-8, or to null for the platform default encoding. On the JDK 9+ module path where locally provided ResourceBundle.Control handles are not supported, this MessageSource always falls back to ResourceBundle#getBundleretrieval with the platform default encoding: UTF-8 with a ISO-8859-1 fallback on JDK 9+ (configurable through the "java.util.PropertyResourceBundle.encoding" system property). Note that #loadBundle(Reader)/ #loadBundle(InputStream)won't be called in this case either, effectively ignoring overrides in subclasses. Consider implementing a JDK 9 java.util.spi.ResourceBundleProvider instead.
[中]组织。springframework。上下文MessageSource实现,使用指定的基名称访问资源束。这个类依赖于底层JDK的java。util。ResourceBundle实现,结合java提供的JDK标准消息解析。文本消息格式。
此MessageSource缓存访问的ResourceBundle实例和为每条消息生成的MessageFormats。如AbstractMessageSource基类所支持的,它还实现了在没有MessageFormat的情况下呈现无参数消息。这个消息源提供的缓存比java的内置缓存快得多。util。ResourceBundle类。
基本名称遵循java。util。ResourceBundle约定:本质上是一个完全限定的类路径位置。如果它不包含包限定符(例如org.mypackage),则将从类路径根解析它。请注意,JDK的标准ResourceBundle将点视为包分隔符:这意味着“test.theme”实际上等同于“test/theme”。
在类路径上,将使用本地配置的#setDefaultEncoding读取捆绑资源:默认情况下为ISO-8859-1;考虑将此转换为UTF-8,或者将其转换为NULL用于平台默认编码。在本地提供ResourceBundle的JDK 9+模块路径上。不支持控制句柄,此MessageSource始终返回ResourceBundle#getBundleretrieval,使用平台默认编码:UTF-8,在JDK 9+上使用ISO-8859-1回退(可通过“java.util.PropertyResourceBundle.encoding”系统属性配置)。请注意,在这种情况下也不会调用#loadBundle(Reader)/#loadBundle(InputStream),实际上会忽略子类中的重写。考虑实现JDK 9 java。util。spi。而不是ResourceBundleProvider。

代码示例

代码示例来源:origin: spring-projects/spring-framework

@Bean
  public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("org/springframework/web/servlet/view/script/messages");
    return messageSource;
  }
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Create a MessageSource for the given basename,
 * to be used as MessageSource for the corresponding theme.
 * <p>Default implementation creates a ResourceBundleMessageSource.
 * for the given basename. A subclass could create a specifically
 * configured ReloadableResourceBundleMessageSource, for example.
 * @param basename the basename to create a MessageSource for
 * @return the MessageSource
 * @see org.springframework.context.support.ResourceBundleMessageSource
 * @see org.springframework.context.support.ReloadableResourceBundleMessageSource
 */
protected MessageSource createMessageSource(String basename) {
  ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
  messageSource.setBasename(basename);
  if (this.defaultEncoding != null) {
    messageSource.setDefaultEncoding(this.defaultEncoding);
  }
  if (this.fallbackToSystemLocale != null) {
    messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
  }
  if (this.beanClassLoader != null) {
    messageSource.setBeanClassLoader(this.beanClassLoader);
  }
  return messageSource;
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Checks JSTL's "javax.servlet.jsp.jstl.fmt.localizationContext"
 * context-param and creates a corresponding child message source,
 * with the provided Spring-defined MessageSource as parent.
 * @param servletContext the ServletContext we're running in
 * (to check JSTL-related context-params in {@code web.xml})
 * @param messageSource the MessageSource to expose, typically
 * the ApplicationContext of the current DispatcherServlet
 * @return the MessageSource to expose to JSTL; first checking the
 * JSTL-defined bundle, then the Spring-defined MessageSource
 * @see org.springframework.context.ApplicationContext
 */
public static MessageSource getJstlAwareMessageSource(
    @Nullable ServletContext servletContext, MessageSource messageSource) {
  if (servletContext != null) {
    String jstlInitParam = servletContext.getInitParameter(Config.FMT_LOCALIZATION_CONTEXT);
    if (jstlInitParam != null) {
      // Create a ResourceBundleMessageSource for the specified resource bundle
      // basename in the JSTL context-param in web.xml, wiring it with the given
      // Spring-defined MessageSource as parent.
      ResourceBundleMessageSource jstlBundleWrapper = new ResourceBundleMessageSource();
      jstlBundleWrapper.setBasename(jstlInitParam);
      jstlBundleWrapper.setParentMessageSource(messageSource);
      return jstlBundleWrapper;
    }
  }
  return messageSource;
}

代码示例来源:origin: JoleneOL/market-manage

@Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
    resourceBundleMessageSource.setDefaultEncoding("UTF-8");
    resourceBundleMessageSource.setBasenames("coreMessage");
    resourceBundleMessageSource.setUseCodeAsDefaultMessage(true);
    return resourceBundleMessageSource;
  }
}

代码示例来源:origin: cwenao/springboot_cwenao

@Bean
  public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("config.message");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
  }
}

代码示例来源:origin: cn.bestwu.simpleframework/simpleframework-core

@Bean
public MessageSource messageSource() {
 MessageSourceProperties properties = messageSourceProperties();
 ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
 if (StringUtils.hasText(properties.getBasename())) {
  messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
    StringUtils.trimAllWhitespace(properties.getBasename())));
 }
 if (properties.getEncoding() != null) {
  messageSource.setDefaultEncoding(properties.getEncoding().name());
 }
 messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale());
 Duration cacheDuration = properties.getCacheDuration();
 if (cacheDuration != null) {
  messageSource.setCacheMillis(cacheDuration.toMillis());
 }
 messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat());
 messageSource.setUseCodeAsDefaultMessage(properties.isUseCodeAsDefaultMessage());
 return messageSource;
}

代码示例来源:origin: com.vmware.card-connectors/connectors-common

@Bean
public MessageSource messageSource() {
  ResourceBundleMessageSource ret = new ResourceBundleMessageSource();
  ret.setFallbackToSystemLocale(false);
  ret.setBasename("cards/text");
  return ret;
}

代码示例来源:origin: otto-de/edison-microservice

@Bean
public ResourceBundleMessageSource edisonValidationMessageSource() {
  ResourceBundleMessageSource source = new ResourceBundleMessageSource();
  source.setBasename("ValidationMessages");
  source.setUseCodeAsDefaultMessage(true);
  return source;
}

代码示例来源:origin: metatron-app/metatron-discovery

/**
 *
 */
@Bean
public MessageSource messageSource() {
 ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
 messageSource.setBasenames("messages/messages", "messages/metatron_security_messages");
 messageSource.setFallbackToSystemLocale(false);
 messageSource.setCacheSeconds(100000);
 messageSource.setDefaultEncoding("UTF-8");
 return messageSource;
}

代码示例来源:origin: com.blossom-project/blossom-autoconfigure

@Bean
@Primary
public MessageSource messageSource( BlossomReloadableResourceBundleMessageSource parentMmessageSource) {
 MessageSourceProperties properties = messageSourceProperties();
 ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
 if (StringUtils.hasText(properties.getBasename())) {
  messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
   StringUtils.trimAllWhitespace(properties.getBasename())));
 }
 if (properties.getEncoding() != null) {
  messageSource.setDefaultEncoding(properties.getEncoding().name());
 }
 messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale());
 Duration cacheDuration = properties.getCacheDuration();
 messageSource.setCacheSeconds(
  cacheDuration == null ? -1 : (int) cacheDuration.getSeconds());
 messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat());
 messageSource.setUseCodeAsDefaultMessage(properties.isUseCodeAsDefaultMessage());
 messageSource.setParentMessageSource(parentMmessageSource);
 return messageSource;
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testMessageSourceResourceBundle() {
  ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
  ms.setBasename("org/springframework/context/support/messages");
  MessageSourceResourceBundle rbe = new MessageSourceResourceBundle(ms, Locale.ENGLISH);
  assertEquals("message1", rbe.getString("code1"));
  assertTrue(rbe.containsKey("code1"));
  MessageSourceResourceBundle rbg = new MessageSourceResourceBundle(ms, Locale.GERMAN);
  assertEquals("nachricht2", rbg.getString("code2"));
  assertTrue(rbg.containsKey("code2"));
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void testResourceBundleMessageSourceWithWhitespaceInBasename() {
  ResourceBundleMessageSource ms = new ResourceBundleMessageSource();
  ms.setBasename("  org/springframework/context/support/messages  ");
  assertEquals("message1", ms.getMessage("code1", null, Locale.ENGLISH));
  assertEquals("nachricht2", ms.getMessage("code2", null, Locale.GERMAN));
}

代码示例来源:origin: stackoverflow.com

@Configuration
public class TestContext {

  @Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

    messageSource.setBasename("i18n/messages");
    messageSource.setUseCodeAsDefaultMessage(true);

    return messageSource;
  }

  @Bean
  public TodoService todoService() {
    return Mockito.mock(TodoService.class);
  }
}

代码示例来源:origin: stackoverflow.com

@Bean
 public MessageSource messageSource() {
   ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
   messageSource.setBasename("locale/messages");
   messageSource.setDefaultEncoding("UTF-8");
   return messageSource;
 }

代码示例来源:origin: stackoverflow.com

@Bean
public LocaleResolver localeResolver() {
 SessionLocaleResolver slr = new SessionLocaleResolver();
 slr.setDefaultLocale(Locale.US); // Set default Locale as US
 return slr;
}

@Bean
public ResourceBundleMessageSource messageSource() {
 ResourceBundleMessageSource source = new ResourceBundleMessageSource();
 source.setBasenames("i18n/messages");  // name of the resource bundle 
 source.setUseCodeAsDefaultMessage(true);
 return source;
}

代码示例来源:origin: com.battcn/request-spring-boot-autoconfigure

private ResourceBundleMessageSource getMessageSource() throws Exception {
  ResourceBundleMessageSource bundleMessageSource = new ResourceBundleMessageSource();
  bundleMessageSource.setDefaultEncoding(defaultString(properties.getDefaultEncoding(), DEFAULT_CHARSET));
  bundleMessageSource.setBasenames(properties.getBaseNames());
  return bundleMessageSource;
}

代码示例来源:origin: stackoverflow.com

public class WebMvcConfiguration extends WebMvcConfigurerAdapter {

 other stuff.....

  @Bean
  public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("Messages/Messages", "Messages/Labels");
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setCacheSeconds(1);
    return messageSource;
  }    

  @Bean
  public AppDateFormatter appDateFormatter(){
    return new AppDateFormatter();
  }

  @Bean
  public FormattingConversionService mvcConversionService() {
    FormattingConversionService conversionService = new DefaultFormattingConversionService();
    conversionService.addFormatter(appDateFormatter()); 
    return conversionService;
  }

}

代码示例来源:origin: hdiv/hdiv

public void initializeServletContext(final ServletContext servletContext) {
  Assert.notNull(config);
  Assert.notNull(application);
  Assert.notNull(linkUrlProcessor);
  Assert.notNull(formUrlProcessor);
  Assert.notNull(servletContext);
  // Init servlet context scoped objects
  HDIVUtil.setHDIVConfig(config, servletContext);
  HDIVUtil.setApplication(application, servletContext);
  HDIVUtil.setLinkUrlProcessor(linkUrlProcessor, servletContext);
  HDIVUtil.setFormUrlProcessor(formUrlProcessor, servletContext);
  ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
  messageSource.setBeanClassLoader(applicationContext.getClassLoader());
  messageSource.setBasename(Constants.MESSAGE_SOURCE_PATH);
  HDIVUtil.setMessageSource(messageSource, servletContext);
}

代码示例来源:origin: Evolveum/midpoint

private ResourceBundleMessageSource buildSource(String basename, ClassLoader classLoader) {
  ResourceBundleMessageSource source = new CachedResourceBundleMessageSource();
  source.setDefaultEncoding(StandardCharsets.UTF_8.name());
  source.setFallbackToSystemLocale(false);
  source.setBasename(basename);
  if (classLoader == null) {
    classLoader = LocalizationServiceImpl.class.getClassLoader();
  }
  source.setBundleClassLoader(classLoader);
  return source;
}

代码示例来源:origin: net.oschina.durcframework/easyopen

/**
 * 设置国际化资源信息
 */
public static void initMessageSource(List<String> isvModules) {
  HashSet<String> baseNamesSet = new HashSet<String>();
  baseNamesSet.add(I18N_OPEN_ERROR);
  
  if(!isvModules.isEmpty()) {
    baseNamesSet.addAll(isvModules);
  }
  
  String[] totalBaseNames = baseNamesSet.toArray(new String[0]);
  if (logger.isInfoEnabled()) {
    logger.info("加载错误码国际化资源:{}", StringUtils.arrayToCommaDelimitedString(totalBaseNames));
  }
  ResourceBundleMessageSource bundleMessageSource = new ResourceBundleMessageSource();
  bundleMessageSource.setBasenames(totalBaseNames);
  MessageSourceAccessor messageSourceAccessor = new MessageSourceAccessor(bundleMessageSource);
  setErrorMessageSourceAccessor(messageSourceAccessor);
}

相关文章

微信公众号

最新文章

更多