Spring 读取i18n国际化资源文件的工具类

2024-06-14 16:32

本文主要是介绍Spring 读取i18n国际化资源文件的工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现有一个国际化资源文件demoUser_zh_CN.properties如下:

demoUser.create.success=创建成功
demoUser.update.success=更新成功
demoUser.delete.success=删除成功
demoUser.start.success=送审成功
demoUser.approval.success=审核成功
demoUser.claim.success=签收成功
demoUser.assignUser.success=分配成功
demoUser.backNode.success=回退成功
demoUser.resolve.success=处理成功
demoUser.assign.success=转办成功
demoUser.signal.success=流转成功
现在我们需要在程序中根据key读取相应的value,因此现在我们写一个加载i18n文件的工具类,以便我们进行操作,此工具类是基于Spring Framework来编写的,具体的代码如下:

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;public class MessageUtil{protected static MessageSourceAccessor accessor;protected static MessageSource messageSource;protected static Set<String> set = new HashSet<String>();private static int defaultStatus = 1;static ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();//静态块初始化资源static{addLocation("classpath*:i18n/*");}//初始化资源文件的存储器protected static void initMessageSourceAccessor(){String[]basenames = new String[set.size()];set.toArray(basenames);ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();reloadableResourceBundleMessageSource.setBasenames(basenames);reloadableResourceBundleMessageSource.setCacheSeconds(5);accessor = new MessageSourceAccessor(reloadableResourceBundleMessageSource);messageSource = reloadableResourceBundleMessageSource;}//删除指定位置的资源public static void removeLocation(String locationPattern){try {Resource[] resources = resourcePatternResolver.getResources(locationPattern);for (int i = 0; i < resources.length; i++) {String url = resources[i].getURL().toString();int lastIndex = url.lastIndexOf("/");String prefix = url.substring(0,lastIndex + 1);String suffix = url.substring(lastIndex+1);suffix = suffix.split("\\.")[0].split("_")[0];set.remove(prefix + suffix);}} catch (IOException e) {throw new RuntimeException(e);}initMessageSourceAccessor();}//加载指定位置的资源文件public static void addLocation(String locationPattern){try {Resource[] resources = resourcePatternResolver.getResources(locationPattern);for (int i = 0; i < resources.length; i++) {String url = resources[i].getURL().toString();int lastIndex = url.lastIndexOf("/");String prefix = url.substring(0,lastIndex + 1);String suffix = url.substring(lastIndex+1);suffix = suffix.split("\\.")[0].split("_")[0];set.add(prefix + suffix);}} catch (IOException e) {throw new RuntimeException(e);}initMessageSourceAccessor();}private MessageUtil(){}public static Message message(int status,String code,Object[] args,Object data){return new Message(status, getMessage(code,args), data);}public static Message message(int status,String code,Object data){return new Message(status, getMessage(code), data);}public static Message message(int status,String code,Object[] args){return new Message(status, getMessage(code,args));}public static Message message(int status, String code) {return new Message(status, getMessage(code));}public static Message message(int status,Object data){return new Message(status,"1",data);}public static Message message(String code){return new Message(defaultStatus, getMessage(code));}public static Message message(String code,Object[] args){return new Message(defaultStatus, getMessage(code, args));}public static Message message(String code,Object[] args,Object data){return new Message(defaultStatus, getMessage(code, args), data);}public static Message message(String code,Object data){return new Message(defaultStatus, getMessage(code), data);}public static String getMessage(String code){return accessor.getMessage(code,LocaleContextHolder.getLocale());}public static String getMessage(String code,String defaultMessage){return accessor.getMessage(code,defaultMessage,LocaleContextHolder.getLocale());}public static String getMessage(String code, Object[] args){return accessor.getMessage(code,args,LocaleContextHolder.getLocale());}public static String getMessage(String code, Object[] args,String defaultMessage){return accessor.getMessage(code, args, defaultMessage, LocaleContextHolder.getLocale());}public static MessageSource getMessageSource() {return messageSource;}}

具体使用:

      //新增@RequestMapping(method = RequestMethod.POST)public @ResponseBody Message create(DemoUser demoUser){demoUser.setProcessState(ProcessBizEngineService.PROCESS_NEW_STATE);demoUserService.save(demoUser);return MessageUtil.message("demoUser.create.success");}



这篇关于Spring 读取i18n国际化资源文件的工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1060928

相关文章

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe