当前位置: 首页> 娱乐> 明星 > 网络工作室营业执照怎么办理_室内装修设计师_神马搜索推广_crm系统网站

网络工作室营业执照怎么办理_室内装修设计师_神马搜索推广_crm系统网站

时间:2025/7/10 18:08:03来源:https://blog.csdn.net/zp357252539/article/details/147073364 浏览次数:1次
网络工作室营业执照怎么办理_室内装修设计师_神马搜索推广_crm系统网站

Spring Boot 国际化配置项详解


1. 核心配置项分类

将配置项分为以下类别,便于快速定位:


1.1 消息源配置(MessageSource 相关)

控制属性文件的加载、编码、缓存等行为。

配置项作用默认值示例说明
spring.messages.basename指定属性文件的路径前缀(不包含语言后缀)messagesclasspath:i18n/messages支持多路径用逗号分隔,如 messages,custom
spring.messages.encoding属性文件的编码格式UTF-8GBK避免中文乱码需显式指定
spring.messages.cache-duration属性文件缓存时间(仅 ReloadableResourceBundleMessageSource 有效)7200s(2小时)60sPT1M(ISO 8601格式)设置为 0 禁用缓存,实现热加载

1.2 区域解析配置(LocaleResolver 相关)

控制如何确定用户的区域(Locale)。

配置项作用默认值示例说明
spring.mvc.locale默认区域(当无法自动检测时使用)由系统 Locale 决定es(西班牙语)直接指定语言代码(如 zh-CN
spring.mvc.fallback-locale备用区域(当主区域无效时使用)enzh支持多个值,用逗号分隔
spring.http.accept-language.header自定义语言检测的请求头名称Accept-LanguageX-Language例如从自定义头读取语言

1.3 Cookie 持久化配置(仅 CookieLocaleResolver
配置项作用默认值示例说明
spring.mvc.locale-resolver.cookie-nameCookie 名称LOCALElang自定义 Cookie 名称
spring.mvc.locale-resolver.cookie-max-ageCookie 有效期(秒)1440(24分钟)3600(1小时)设置为 -1 表示会话级,0 删除 Cookie

1.4 Session 持久化配置(仅 SessionLocaleResolver

无独立配置项,依赖 Session 的默认行为。


1.5 其他高级配置
配置项作用默认值示例说明
spring.messages.always-use-message-format是否强制使用 MessageFormat 解析消息(支持 {0} 占位符)truefalse关闭后仅支持简单键值对,性能更高
spring.messages.use-code-as-default-message当消息未找到时,是否返回原始键(如 error.loginfalsetrue开启后避免因消息缺失导致空值

2. 完整配置示例(application.properties/yml)
2.1 properties 格式
# 消息源配置
spring.messages.basename=classpath:i18n/messages,classpath:i18n/overrides
spring.messages.encoding=UTF-8
spring.messages.cache-duration=3600s # 1小时热加载# 区域配置
spring.mvc.locale=zh-CN
spring.mvc.fallback-locale=en
spring.http.accept-language.header=X-Language# Cookie 持久化配置
spring.mvc.locale-resolver.cookie-name=MY_LOCALE
spring.mvc.locale-resolver.cookie-max-age=86400 # 1天
2.2 YAML 格式
spring:messages:basename: "classpath:i18n/messages,classpath:i18n/overrides"encoding: UTF-8cache-duration: 3600smvc:locale: "zh-CN"fallback-locale: enlocale-resolver:cookie-name: MY_LOCALEcookie-max-age: 86400http:accept-language:header: X-Language

3. 代码配置示例(Java 配置覆盖)
3.1 自定义 ReloadableResourceBundleMessageSource
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.setBasenames("i18n/messages", "i18n/overrides"); // 支持多个前缀source.setDefaultEncoding("UTF-8");source.setCacheSeconds(60); // 覆盖配置项,60秒热加载return source;}
}
3.2 自定义 LocaleResolver(Cookie 持久化)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;@Configuration
public class LocaleConfig {@Beanpublic CookieLocaleResolver localeResolver() {CookieLocaleResolver resolver = new CookieLocaleResolver();resolver.setCookieName("CUSTOM_LOCALE"); // 覆盖配置项resolver.setCookieMaxAge(86400);         // 1天有效期resolver.setDefaultLocale(Locale.JAPAN); // 默认日语return resolver;}
}

4. 配置项总结表格
配置类型配置项作用默认值适用场景
消息源spring.messages.basename属性文件路径messages自定义多语言文件路径
消息源spring.messages.encoding文件编码UTF-8解决乱码问题
消息源spring.messages.cache-duration热加载间隔7200s开发环境快速调试
区域spring.mvc.locale默认语言系统默认设置全局默认语言
区域spring.http.accept-language.header自定义语言头Accept-Language适配非标准请求头
Cookiespring.mvc.locale-resolver.cookie-nameCookie 名称LOCALE避免与其他应用冲突
Session无独立配置项依赖 Session——会话内语言切换

5. 常见问题解答

Q1:如何确保属性文件被正确加载?
  • 检查路径:确保文件位于 src/main/resources/i18n/ 目录(或配置的路径)。
  • 文件命名:格式为 <basename>_{language}.properties(如 messages_zh_CN.properties)。
  • 日志调试:添加 logging.level.org.springframework.context.support=DEBUG 查看加载日志。

Q2:如何强制使用固定语言?
# application.properties
spring.mvc.locale=es # 强制西班牙语
spring.mvc.fallback-locale=es # 备用语言也设为西班牙语

Q3:如何同时支持 URL 参数切换语言?

结合 LocaleChangeInterceptor

import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LocaleChangeInterceptor()).addPathPatterns("/**"); // 通过 ?lang=es 参数切换}
}

Q4:属性文件中的 {0} 占位符无效?
  • 确保 spring.messages.always-use-message-format=true(默认值)。
  • 示例消息:
    greeting=Hello, {0}!
    

Q5:如何避免 Cookie 跨域问题?

CookieLocaleResolver 中设置域:

resolver.setCookieDomain(".example.com"); // 设置域为整个域名

6. 最佳实践
  • 多环境配置:通过 application-{profile}.properties 区分开发和生产环境的 cache-duration
  • 性能优化:生产环境禁用热加载(设为 0 可能影响性能)。
  • 国际化测试:使用 Postman 或浏览器插件修改 Accept-Language 头测试不同语言。

总结

通过上述配置,可灵活控制 Spring Boot 国际化行为。核心是理解 MessageSourceLocaleResolver 的协作关系,结合业务需求选择合适的持久化策略(Cookie/Session)和文件加载方式。

关键字:网络工作室营业执照怎么办理_室内装修设计师_神马搜索推广_crm系统网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: