当前位置: 首页 > wzjs >正文

网站建设的过程包括几个阶段sem推广软件选哪家

网站建设的过程包括几个阶段,sem推广软件选哪家,logo设计在线生成免费u钙,做网站数据库设计Spring MVC 国际化机制详解(MessageSource 接口体系) 1. 核心接口与实现类详解 接口/类名描述功能特性适用场景MessageSource核心接口,定义消息解析能力支持参数化消息(如{0}占位符)所有国际化场景的基础接口Resource…

Spring MVC 国际化机制详解(MessageSource 接口体系)

在这里插入图片描述


1. 核心接口与实现类详解
接口/类名描述功能特性适用场景
MessageSource核心接口,定义消息解析能力支持参数化消息(如{0}占位符)所有国际化场景的基础接口
ResourceBundleMessageSourceSpring 官方实现,基于 ResourceBundle支持缓存、自动加载属性文件(如messages_en.properties通用场景(推荐)
StaticMessageSource内存中存储消息(非文件)动态注册消息(如运行时配置)单元测试或动态消息场景
ReloadableResourceBundleMessageSource增强版 ResourceBundleMessageSource支持热加载(无需重启)、编码指定(如encoding=UTF-8需要动态更新消息的生产环境
CacheAwareContextControlMessageSource支持国际化上下文控制(如日期格式)结合 LocaleContextHolder 管理线程级本地化需要复杂本地化控制的场景

2. 完整示例代码
2.1 配置类(Spring Boot)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;@Configuration
public class I18nConfig {@Beanpublic ReloadableResourceBundleMessageSource messageSource() {ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();source.setBasename("classpath:i18n/messages"); // 属性文件前缀source.setDefaultEncoding("UTF-8");            // 编码设置source.setCacheSeconds(60);                    // 60秒后重新加载(热更新)return source;}
}
2.2 国际化属性文件
  • messages_en.properties

    greeting=Hello, {0}!
    error=An error occurred: {0}
    
  • messages_zh.properties

    greeting=你好,{0}!
    error=发生错误:{0}
    
2.3 控制器示例
import org.springframework.context.MessageSource;
import org.springframework.web.bind.annotation.*;import java.util.Locale;@RestController
public class I18nController {private final MessageSource messageSource;public I18nController(MessageSource messageSource) {this.messageSource = messageSource;}@GetMapping("/greeting")public String greeting(@RequestHeader(value = "Accept-Language", required = false) Locale locale,@RequestParam String name) {// 根据 locale 解析消息String message = messageSource.getMessage("greeting", new Object[]{name}, locale);return message;}@ExceptionHandler(Exception.class)public String handleException(Exception ex, Locale locale) {return messageSource.getMessage("error", new Object[]{ex.getMessage()}, locale);}
}
2.4 测试请求
# 中文请求
curl -H "Accept-Language: zh-CN" "http://localhost:8080/greeting?name=张三"
# 输出:你好,张三!# 英文请求
curl -H "Accept-Language: en-US" "http://localhost:8080/greeting?name=John"
# 输出:Hello, John!

3. Spring Boot 国际化配置项整理
配置项作用默认值示例
spring.messages.basename消息属性文件前缀(路径)messagesclasspath:i18n/messages
spring.messages.encoding文件编码UTF-8GBK
spring.messages.cache-duration热加载间隔(仅 Reloadable 实现生效)7200s(2小时)60s
spring.http.accept-language.header自定义语言头名称Accept-LanguageX-Language
spring.mvc.locale默认语言由系统 Locale 决定en
spring.mvc.fallback-locale备用语言enzh

4. 关键代码注释说明
  1. ReloadableResourceBundleMessageSource 配置

    source.setCacheSeconds(60); // 60秒后自动重新加载属性文件(无需重启)
    
  2. 控制器中解析消息

    // 参数顺序:消息键、参数数组、当前Locale
    messageSource.getMessage("greeting", new Object[]{name}, locale);
    
  3. 属性文件占位符语法

    greeting=Hello, {0}! // {0} 表示第一个参数(name)
    

5. 总结表格:MessageSource 实现对比
实现类特性适用场景配置复杂度
ResourceBundleMessageSource基础实现,无缓存简单项目
ReloadableResourceBundleMessageSource支持热加载、编码指定需要动态更新的生产环境
StaticMessageSource内存存储,动态注册消息单元测试或动态消息
CacheAwareContextControlMessageSource支持线程级本地化上下文需要复杂本地化控制(如日期格式)

6. 常见问题
  • Q:如何自定义语言切换参数?
    A:通过 @Configuration 注册 LocaleResolver,例如从请求参数 lang 获取语言:

    @Bean
    public LocaleResolver localeResolver() {AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();resolver.setDefaultLocale(Locale.US);resolver.setLanguageAttribute("lang"); // 从请求参数 lang 获取return resolver;
    }
    
  • Q:属性文件路径错误如何排查?
    A:确保文件位于 src/main/resources/i18n/ 目录,名称格式为 messages_{language}.properties


提示:国际化配置建议与前端框架(如 Thymeleaf)结合,通过 <spring:message> 标签直接渲染消息。

http://www.dtcms.com/wzjs/120666.html

相关文章:

  • 中石油工程建设公司网站长沙seo优化首选
  • 有没有专业做盐的网站成都企业网站seo技术
  • 黑龙江公司网站开发全渠道营销
  • 网站如何做信誉认证seo系统培训班
  • 做思维导图的网站百度云资源搜索引擎
  • 新华网站建设什么是seo站内优化
  • 德阳网站优化媒体发布公司
  • WordPress建站可以吗app开发公司哪家好
  • 企业网站的seo惠州网站建设方案推广
  • 各大网站搜索引擎入口西安seo排名公司
  • 工程公司财务制度seo排名优化关键词
  • 武清做网站的杭州百度公司在哪里
  • 西安保洁公司网站建设企业品牌推广网站
  • 网站最新发布址seo排名优化怎么样
  • 郑州外贸网站建设公司价格网络seo首页
  • 开发系统需要什么技术站长工具seo综合查询工具
  • 网站建设数据库是什么站长是什么职位
  • 公司做推广做网站好还是产品推广词
  • wordpress 影楼主题惠州seo外包
  • 临沂专业做网站手机端网站优化
  • 一个公司做2个产品网站怎么做的产品代理推广方案
  • 漯河网站推广哪家好刷seo快速排名
  • 厦门市建设局报表网站站长工具精华
  • 做网站的劣势网络营销app有哪些
  • 高校网站建设与管理问题分析百度资源平台
  • 怎么将自己房子投入网站做民宿重庆网站seo教程
  • 网站开发宣传标语单页网站设计
  • 网站建设公司如何盈利友情链接翻译
  • 大学生网站开发接单郑州技术支持seo
  • 政府网站建设与管理的现状12345浏览器