springboot实现国际化居然可以这么简单,Java并发编程书籍推荐

content = defaultMessage;

}

return content;

}

}

不知道你有没有发现messageSource.setBasename(“i18n/messages”);这行代码,很重要,i18n表示你们文件目录,messages表示你配置文件的前缀,比如我的:messages_en_US.properties、messages_zh_CN.properties、messages_fr_FR.properties、messages.properties。

4.新建测试代码

package com.ymy.controller;

import com.ymy.vo.ResultVo;

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@Slf4j

public class TestController {

@GetMapping(value = “/test”)

public ResultVo test(){

ResultVo resultVo = ResultVo.faild(“code-0001”);

return resultVo;

}

}

这里我们看到引用了ResultVo,源码如下:

package com.ymy.vo;

import com.ymy.utils.I18nUtil;

import lombok.Getter;

@Getter

public class ResultVo {

private String code;

private String msg;

private T data;

private String createTime ;

private ResultVo(String code){

this.code = code;

setCode(code);

}

public void setCode(String code) {

String message = null;

try {

message =I18nUtil.getMessage(code);

}catch (Exception e){

message = code;

}

this.code = code;

this.msg = message;

}

/**

  • 默认成功返回

  • @param

  • @return

*/

public static ResultVo OK(){

return new ResultVo(“SUCCESS”);

}

/**

  • 返回只带code的信息

  • @param code

  • @param

  • @return

*/

public static ResultVo faild(String code){

return new ResultVo(code);

}

}

如果ResultVo中的@Getter报错的话,可以在pom.xml中引入lombok的依赖:

org.projectlombok

lombok

true

5.测试

中文:

在这里插入图片描述

如果中文乱码,推荐你将中文转换成unicode,在写往配置文件中。

英文:

在这里插入图片描述

法文:

在这里插入图片描述

是不是很简单?就是这么的丝滑,我们现在在升级一下,我们现在需要提示:对不起,张三,密码错误,剩余5次,这里面有两个动态信息,张三、5 ,这两个都是会实时发生改变的,那我们如何处理呢?

不知道你还记得国际化工具类中的这个方法吗?

/**

  • 返回带参数的提示信息

  • @param code

  • @param args

  • @return

*/

public static String getMessage(String code, Object[] args) {

return getMessage(code, args, “”);

}

我们一起改造一下代码:

controller:

package com.ymy.controller;

import com.ymy.vo.PwdVo;

import com.ymy.vo.ResultVo;

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.*;

@RestController

@Slf4j

public class TestController {

private static Integer count = 5;

/**

  • 密码校验

  • @param pwdVo

  • @return

*/

@RequestMapping(value = “checkPwd”,method = RequestMethod.POST)

public ResultVo checkPwd(@RequestBody PwdVo pwdVo){

//这里我就不做判空处理了,因为判空处理还需要往配置文件中添加控的提示信息,这里主要展示带参数的提示信息

if(!“123456”.equals(pwdVo.getPwd())){

count–;

return ResultVo.faild(“code-0002”,pwdVo.getUserName(),count);

}

count = 5;

return ResultVo.OK();

}

@GetMapping(value = “/test”)

public ResultVo test(){

ResultVo resultVo = ResultVo.faild(“code-0001”);

return resultVo;

}

}

PwdVo:

package com.ymy.vo;

import lombok.Getter;

import lombok.Setter;

@Getter

@Setter

public class PwdVo {

/**

  • 用户名

*/

private String userName;

/**

  • 密码

*/

private String pwd;

}

ReslutVo:

package com.ymy.vo;

import com.ymy.utils.I18nUtil;

import lombok.Getter;

@Getter

public class ResultVo {

private String code;

private String msg;

private T data;

private String createTime ;

// private ResultVo(String code){

// this.code = code;

// setCode(code);

// }

private ResultVo(String code,Object … args){

this.code = code;

setCode(code,args);

}

public void setCode(String code,Object … args) {

String message = null;

try {

message =I18nUtil.getMessage(code,args);

}catch (Exception e){

message = code;

}

this.code = code;

this.msg = message;

}

/*

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

  • 默认成功返回

  • @param

  • @return

*/

public static ResultVo OK(){

return new ResultVo(“code-0003”);

}

/**

  • 返回只带code的信息

  • @param code

  • @param

  • @return

*/

public static ResultVo faild(String code){

return new ResultVo(code);

}

/**

  • 返回带参数的提示信息

  • @param code

  • @param

  • @return

*/

public static ResultVo faild(String code,Object … arg){

return new ResultVo(code,arg);

}

}

语言配置文件:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值