Map<String,String> responseInfo = new HashTable<String,String>();
responseInfo.set("FE_PRC_BACK_001","TargetUri is not exist");
//responseInfo.set("FE_XREQ_002","Target Uri of XRequest is Empty.");
//responseInfo.set("FE_REQ_003","The processor flag is incorrect or the BusinessContext time out.");
FE_PRC_BACK_001这样的是错误码,TargetUri is not exist是错误信息,需要以键值对(JSON)的形式响应给浏览器
这时,JAVA端是应该以什么方式来罗列这些错误码和错误信息呢?常量?还是枚举类型?
String FE_PRC_BACK_001 = "TargetUri is not exist";
请教一下各位大神,你们的项目中都是怎么设计的?
伊谢尔伦2017-04-18 09:18:48
두 가지 해결 방법이 있습니다.
1. 객체로 캡슐화합니다. 예:
2. 다음과 같이 열거형을 사용하여 구현합니다.
으아악1번과 2번의 구현 아이디어는 사실 비슷하지만(주제가 제시하는 코드 아이디어도 비슷하고, 특정DTO
을 사용할지 일반Map
을 사용할지의 차이만 있을 뿐입니다), 열거형을 사용할 경우에는 다음과 같은 문제가 있습니다. 다음 몇 가지 참고할 사항:
열거 결과가 base-api, 버전 1.0.0에 존재하고 각각 프로젝트 A와 B가 있고 프로젝트 A는 프로젝트 B에 종속되며 프로젝트 A와 B는 모두 있다고 가정합니다. base-api에 의존
1. 프로젝트 B가 base-api를 1.0.1로 업그레이드하고 새 열거가 Result에 추가되고 프로젝트 B의 인터페이스가 새 열거를 반환하지만 프로젝트 A는 그렇지 않은 경우 base-api를 업그레이드할 때 인터페이스가 호출되고 새 열거형이 반환되면 이전 버전의 base-api에 새 열거형이 존재하지 않기 때문에 역직렬화 예외가 보고됩니다.
2. 기본값은 열거형을 열거형 변수 이름으로 직렬화하는 것입니다. 이를 사용자 정의 형식(예: msg 포함)으로 직렬화하려면 직렬 변환기를 사용자 정의해야 합니다.
阿神2017-04-18 09:18:48
모든 오류 메시지가 확인되면 프로그램에 작성할 수 있습니다. 전역 상수보다 열거형을 사용하는 것이 더 쉽습니다. 오류 코드와 메시지에 해당하는 전역 상수를 갖는 것은 여전히 매우 고통스럽습니다.
저는 Java의 열거형을 가장 좋아합니다. 주로 Java의 열거형 유형을 확장, 구성 및 재작성할 수 있기 때문입니다toString
... Java의 열거형 자체는 객체이고, 열거형 유형 자체는 다소 특별한 클래스이기 때문입니다.
오류 메시지를 수정할 수 없는 경우 신청 과정에서 추가되어 데이터베이스에 저장될 수 있습니다. 그런 다음 이를 처리하기 위한 특별한 관리 클래스 세트를 작성하고 HashTable 또는 HashMap을 사용하여 이를 구현해야 합니다. 하지만 내 생각엔 당신의 문제는 그렇게 복잡하지 않은 것 같아요.
PHPz2017-04-18 09:18:48
Java 열거에 잘못된 키를 넣은 다음 속성 파일 등 외부 파일에 잘못된 키와 잘못된 정보 간의 매핑을 넣습니다. 런타임에는 오류 열거 키를 기반으로 파일에서 오류 텍스트를 실시간으로 검색하면 됩니다. 오류가 자주 발생하지 않기 때문에 실시간으로 오류 정보를 읽는 데 문제가 없을 것입니다. 프로그램이 시작됩니다. 성능을 향상시키기 위해 정보를 읽고 캐시합니다.