2017-04-21 157 views
1

我跟着教程加載這裏給出的純文本文件:https://github.com/spring-cloud/spring-cloud-config/blob/master/docs/src/main/asciidoc/spring-cloud-config.adoc#serving-plain-text春季雲配置服務器文件

當我測試的配置以下網址提供它完美的作品,並返回純文本文件: http://localhost:8888/icullen-webapp/default/master/messages_en_US.properties

但是,當我在配置客戶端使用,它需要年齡來加載我的網頁,因爲我有太多的翻譯在同一頁面。代碼從config repo中找到翻譯,但是對於每個翻譯,它都會調用服務器,因此它的速度很慢。

下面找到我的代碼:

<bean id="messageSource" 
     class="com.icullen.site.utils.TolerantReloadableResourceBundleMessageSource"> 
     <property name="basenames" value="http://localhost:8888/icullen-webapp/default/master/messages" /> 
     <property name="defaultEncoding" value="UTF-8" /> 
     <property name="cacheSeconds"> 
      <value>5</value> 
     </property> 
    </bean> 

public class TolerantReloadableResourceBundleMessageSource extends 
ReloadableResourceBundleMessageSource { 

private static final Logger logger = LoggerFactory.getLogger(TolerantReloadableResourceBundleMessageSource.class); 

@Override 
protected String getMessageInternal(String code, Object[] args, 
     Locale locale) { 
    String messageInternal = super.getMessageInternal(code, args, locale); 
    if(messageInternal == null){ 
     logger.warn("No translation for : {}", code); 
    } 
    return messageInternal != null ? messageInternal : "?" + code + "?"; 
} 
} 

的翻譯被稱爲在JSP使用這樣

<spring:message htmlEscape="true" code="category.${region.name}"/> 

春天的消息我在做什麼錯?我應該怎麼做才能快速加載頁面。請幫助,因爲我們卡住了。

回答

0

我找到了解決方案:它是我的緩存值。我必須將緩存設置爲-1,即永遠保存緩存。 當我改變我的屬性文件時,我調用了一個手動刷新緩存的控制器。

@Controller 
public class RefreshTranslationsController { 

private static final Logger logger = LoggerFactory.getLogger(RefreshTranslationsController.class); 

@Autowired 
private TolerantReloadableResourceBundleMessageSource messageSource; 


@RequestMapping(value = "/product/refresh/translations", method = RequestMethod.GET) 
public String refreshTranslations(HttpServletRequest request, Locale locale, Model model) { 
    if(userIsLoggedIn()){ 
      logger.info("Loaded message source before refreshing : "+messageSource.toString()); 
      messageSource.clearCache(); 
      logger.info("Cleared message cache : "); 
      messageSource.getMessage("category.FLASH", null, locale); 
      logger.info("Translations Reloaded !!! "); 
     } 
    }else{ 
     throw new CullenSecurityException(); 
    } 
    return "redirect:/product/"; 
} 

}

相關問題