【Java编程规范】[框架级编程规范]002消息编码规则及配置

消息配置文件

1.公共配置文件

公共配置文件路径:

com.XXX.mdd.framework.core.message

public.properties 

#处理成功
200=成功
#当期待的数据不存在时
1=失败(数据不存在,操作失败!)
#出现未知错误时
2=系统发生异常,请稍后再试
#请求地址错误
404=请求地址不存在,404错误
#服务器访问500异常
500=500服务器内部错误(Internal server error)
#--- 数据对象属性通用校验错误(Start) ----# 
10000={0}不能为空
10010={0}长度只能在{1}-{2}之间
10020={0}长度必须大于{1}
10030={0}长度必须小于{1}
10040={0}不是正确的身份证号
10050={0}不是正确的电子邮箱
10060={0}不是正确的移动电话
10070={0}的类型不正确
10080={0}不是正确的日期格式
10090={0}值域错误
10100=排序配置的alias字段的json格式错误:{0}
#--- 数据对象属性通用校验错误(End) ----#

#--- java常见异常(Start) ----#
10101=数据库操作失败!
10102=数组下标越界!
10103=数学运算异常!
10104=空指针异常!
10105=找不到类异常
10106=IO异常
10107=方法的参数错误
10108=类型强制转换错误!
10109=违背安全原则异常!
10110=操作数据库异常!
10111=方法未找到异常!
10112=Java虚拟机发生了内部错误!
#--- java常见异常(End) ----#

#--- 框架定义的通用错误编码(Start) ---#
10201=读取配置文件{0}失败
10120=找不到方法异常
10130=方法内部异常
10140=系统尚未被授权访问该服务,请与服务提供方联系!
#--- 框架定义的通用错误编码(End) ---#
#--- 没有机构数据访问权限 ---#
20010=没有数据访问权限
#interfaceApi校验header头
40010=交易流水不能为空
40020=系统编码不能为空
40030=模块编码不能为空
40040=ip不能为空
#加解密
60010=Des解密失败
60020=Md5加密失败
#----- email工具相关异常 -----#
90010=发送邮件异常
90050=主机名不能为空
90051=端口号不能为空
90052=用户名不能为空
90053=密码不能为空
#人脸识别
70010=图片不能为空
70020=业务编码不能为空
70030=密钥不能为空
70040=注册类型不能为空
70050=图片大小不能大于200K
70060=无法识别的编码格式
70070=服务器地址不能为空
70080=远程调用人脸识别注册服务失败
70090=远程调用人脸1:1识别服务失败
70100=远程调用人脸1:N识别服务失败
70110=远程调用人脸识别删除服务失败
70120=远程调用人脸识别查询服务失败
#图像识别
80010=图片不能为空
80020=密钥不能为空
80030=图片类型不能为空
80040=业务编码不能为空
80050=图片大小不能大于200K
80060=服务器地址不能为空
80070=远程调用OCR识别服务失败
#rabbitMq工具类提示
50010=rmq主机地址不能为空
50020=rmq用户名不能为空
50030=rmq用户密码不能为空
50040=rmq虚拟机名称不能为空
50050=rmq主机端口不在1-65535之间
50060=获取rmq工厂失败
50070=获取rmq模板失败
50080=发送rmq消息失败
50090=rmq监听启动异常
50100=监听未找到【{0}】中的【{1}】方法
50110=找不到名称为【{0}】的bean
#----- solr工具相关异常 -----#
30010=solr服务器异常
30020=solr流异常
30030=solr未知异常
30040=solr远程运行异常
#----- 通用业务异常相关 -----#
20001=新增时校验重复
20002=更新时校验重复

  l 存放跨领域的公共消息配置信息;使用注释隔开,分块书写;目前按照第三位编码为类型来区分。

 l 当前如有增加公共配置需求,需要通知管理员来进行统一审核后维护。

2.项目私有配置文件

私有配置文件路径:每个领域的resources下

private.properties

#--- 客户信息资源消息(Start) ----#   

CUST10060=客户的人员编码不能为空

CUST10070=客户的的证件已被使用

CUST10080=机构下无此客户

CUST10090=客户的电子邮箱格式错误

CUST10100=客户的身份证格式错误

#--- 客户信息资源消息(End) ----#

#--- 用户信息资源消息(Start) ----#   

USER10010=用户名不能为空

USER10090=此用户不是员工用户

USER10100=无此机构用户

USER10110=无此类用户

USER10121=用户登录信息不存在或者已失效

USER10120=用户不存在 

#--- 用户信息资源消息(End) ----#

存放领域内私有的消息配置信息;使用注释隔开,分块书写;

常见问题说明:公共配置里面已经存在的,优先使用公共配置里面信息,公共配置支持扩展。

#--- 数据对象属性通用校验错误(Start) ----#   

10000={0}不能为空

10010={0}长度只能在{1}-{2}之间

10020={0}长度必须大于{1}

10030={0}长度必须小于{1}

10040={0}不是正确的身份证号

10050={0}不是正确的电子邮箱

10060={0}不是正确的移动电话

10070={0}的类型不正确

#--- 数据对象属性通用校验错误(End) ----#

3.加载配置文件

每次调用初始化配置文件信息。

package com.XXX.mdd.framework.core.message;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MessageReader {
   
   private static MessageReader messageReader = new MessageReader();
   
   private static final String PRIVATE = "/private.properties";
   
   private static final String PUBLIC = "public.properties";
   
   private Properties properties; 
   
   private static final Logger logger = LoggerFactory.getLogger(MessageReader.class);
   
   /**
 * 单例构造器,初始化时读取private.properties和public.properties文件里的消息并缓存
 */
 private MessageReader(){
      this.properties = new Properties();
      InputStream privatePro = null;
      try {
         privatePro = this.getClass().getResourceAsStream(PRIVATE);
         if(privatePro!=null){
            properties.load(new InputStreamReader(privatePro, "UTF-8"));
         }
      } catch (Exception e) {
         logger.warn("私有提示消息文件加载失败",e);
      }finally {
         if(privatePro!=null){
            try {
               privatePro.close();
            } catch (Exception e) {
               logger.warn("私有提示消息文件加载失败",e);
            }
         }
      }
      InputStream publicPro = null;
      try {
         publicPro = this.getClass().getResourceAsStream(PUBLIC);
         if(publicPro!=null){
            properties.load(new InputStreamReader(publicPro, "UTF-8"));
         }
      } catch (Exception e) {
         logger.warn("公共提示消息文件加载失败",e);
      }finally {
         if(publicPro!=null){
            try {
               publicPro.close();
            } catch (Exception e) {
               logger.warn("公共提示消息文件加载失败",e);
            }
         }
      }
   }
   
   public static MessageReader getMessageReader(){
      return messageReader;
   }
   
   public String getPropertie(String name){
      Object object = this.properties.get(name);
      if(object!=null){
         return object.toString();
      }
      return null;
   }
   
   public String getPropertie(String name,String...params){
      String propertie = getPropertie(name);
      if(propertie!=null){
         String newPropertie=null;
         if(params!=null){

            for (int i = 0 ; i < params.length; i++) {
               newPropertie=propertie.replace("{"+i+"}", params[i]);
            }
         }
         return newPropertie;
      }
      return null;
   }
   
   public void loadProperties(InputStream in){
      try {
         properties.load(new InputStreamReader(in, "UTF-8"));
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
等保二级是指信息安全等级保护的一种级别标准,而Java是一种广泛应用于软件开发的编程语言。将等保二级规范应用于Java编程有以下几个方面的考虑。 首先,等保二级要求限制系统的安全风险,其中涵盖了系统架构、配置规约、代码规约等方面。在Java开发中,可以通过采用安全的编码规范,如遵循OWASP Top 10安全编码规范,确保开发的Java应用程序没有常见的安全漏洞,如跨站脚本攻击(XSS)、SQL注入等。 其次,等保二级要求对系统进行严格的访问控制和权限管理。在Java中,可以通过使用访问控制机制,如使用RBAC模型(基于角色的访问控制)或ABAC模型(基于属性的访问控制)来实现对用户角色和权限的管理。此外,还可以使用一些开源的安全框架,如Spring Security,来提供各种验证和授权的功能。 此外,等保二级要求对系统进行安全审计和监控。在Java开发中,可以通过使用日志框架,如Log4j或Logback,来记录系统的操作日志和安全事件,确保系统的追踪和审计能力。同时,还可以通过使用一些监控工具,如Java Management Extensions(JMX)和系统工具,来监控系统的运行状况和及时发现潜在的安全问题。 最后,等保二级还要求对系统进行灾备和恢复能力的规划。在Java开发中,可以通过使用一些高可用和容错的技术,如负载均衡、故障转移和数据备份等,来提高应用程序的可用性和可靠性。同时,也可以使用一些监控和警报工具,如Nagios或Zabbix,来实时监测系统运行情况,及时处理异常情况,保障系统的连续运行能力。 总之,将等保二级规范应用于Java开发中需要考虑安全编码规范、访问控制和权限管理、安全审计和监控,以及灾备和恢复能力等方面。通过采用合适的技术和框架,可以提高Java应用程序的安全性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0海滨小城0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值