利用AOP自定义注解完成国际化项目之返回提示语(message)

2022-06-21 08:15:49

1、使用注解

@LanguageControl

2、自定义注解

package forum.utils.annotation;


import java.lang.annotation.*;

/**
 * 返回语言控制
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LanguageControl {

}

3、aop

/**
 * 语言控制AOP
 */
@Aspect
@Order(3)//执行顺序,数值最大,最后执行
@Component
public class LanguageControlAspect {

	@Autowired
	private PublicMethodController publicMethodController;

	@Pointcut("@annotation(forum.utils.annotation.LanguageControl)")
	public void logPointCut() {

	}

	@Around("logPointCut()")
	public Object around(ProceedingJoinPoint point) throws Throwable {
		Result result = new Result();
		HttpServletRequest request = HttpSessionUtil.getRequest();
		//执行方法
		result = (Result) point.proceed();
		result = publicMethodController.transResultMessage(request,result);
		return result;
	}
}

4、公共方法

public Result transResultMessage(HttpServletRequest request,Result result){
        if(request != null && StringUtils.equals(request.getHeader(PublicPreEnum.REQUEST_USER_LANGUAGE.value),"EN") && result != null && !StringUtils.isEmpty(result.getMessage())){
            String en = redisService.get(PublicPreEnum.REDIS_DATABASE_TWO,PublicPreEnum.REDIS_ZH_EN.value+result.getMessage());
            if(StringUtils.isEmpty(en)){
                ForumZhEn forumZhEn = forumZhEnService.selectOne(new EntityWrapper<ForumZhEn>().eq("zh",result.getMessage()));
                if(forumZhEn!=null){
                    en = forumZhEn.getEn();
                    redisService.set(PublicPreEnum.REDIS_DATABASE_TWO,PublicPreEnum.REDIS_ZH_EN.value+result.getMessage(),en);
                }else{
                    en = TransApi.ZH_to_EN(result.getMessage());
                    if(!StringUtils.isEmpty(en)){
                        forumZhEn = new ForumZhEn();
                        forumZhEn.setZh(result.getMessage());
                        forumZhEn.setEn(en);
                        forumZhEnService.insert(forumZhEn);
                        redisService.set(PublicPreEnum.REDIS_DATABASE_TWO,PublicPreEnum.REDIS_ZH_EN.value+result.getMessage(),en);
                    }else{
                        en = result.getMessage();
                    }
                }
            }
            result.setMessage(en);
        }
        return result;
    }
  • 作者:小达哥的垃圾桶
  • 原文链接:https://dada-superman.blog.csdn.net/article/details/106002654
    更新时间:2022-06-21 08:15:49