2014-06-05 3 views
0

다른 웹 응용 프로그램에 요청을 전파하는 간단한 웹 응용 프로그램이 있습니다. 내 웹 응용 프로그램은 동일한 웹 응용 프로그램을 쿼리하지만 서로 다른 유형의 정보를 쿼리하는 매우 유사한 두 가지 API를 제공합니다. 예를 들어, 내 웹 응용 프로그램은 소요이 두 URL의HTTP 요청 매개 변수 유형 전파

http://myservice.com:8080/otherservicecall1?userId=(userid)

http://myservice.com:8080/otherservicecall2?accountId=(accountid)

내 웹 응용 프로그램에 대해 동일한 서비스와 데이터 레이어를 사용하려면, 두 개의 구별하는 가장 좋은 방법은 무엇입니까 이러한 요청에 대한 다른 매개 변수? 예를 들어, 나는 그런

log.error("Could not find information on userId = " + userId); 

그러나이 같은 로그 및 예외 메시지는 요청의 두 가지 유형에 적용하기에 충분히 일반적인하지 않은 같은 로그 메시지와 함께, 다른 서비스에서 404 년대를 처리하는 내 데이터 레이어의 클래스가 즉 매개 변수의 이름을 보유하고있는 매개 변수 유형 변수를 전달해야한다는 의미입니다.

내가 궁극적으로 묻는 것은 모든 함수 호출을 통해 전달하지 않고 서비스 및 데이터 계층을 통해 컨트롤러를 통해 전달하는 매개 변수의 이름을 전파하는 간단한 방법일까요? 나는 열거 형을 어떻게 든 사용하는 것을 생각했지만 그들이 여기서 어떻게 도움이 될지를 볼 수는 없다.

답변

1

예외의 경우 우리가 찾고있는 객체의 id를 반환하는 메소드를 가진 일반 ObjectNotFoundException을 던집니다. 특수화 된 예외 메시지가 필요하면 ObjectNotFoundException을 좀 더 구체적으로 확장 한 다음 Spring SimpleMappingExceptionResolver를 업데이트하여보다 구체적인 새 예외를 처리합니다.

가장 일반적인 예외 (ObjectNotFoundException)를 exceptionMapping 목록의 마지막에 두십시오.

서비스의 경우, 매개 변수가 userid 또는 accountid인지에 대해 걱정하지 않아도됩니다. 두 매개 변수의 동작은 동일해야합니다. 걱정이된다면 사용자 인터페이스 계층이 서비스 및 지속성 계층에 유출됩니다. 어느 것이 나쁜 것입니다.

+0

@RequestMapping을 사용합니다. 두 개의 요청을 처리하기 위해 컨트롤러에 두 개의 개별 기능이 있습니다. 내 질문은 스프링 질문보다는 자바 문제이다. 클래스를 통해 요청 매개 변수의 이름을 전달하는 가장 좋은 방법을 함수를 통해 전달하지 않고 알고 싶습니다. – user1553248

+0

알겠습니다. 답변을 업데이트하겠습니다. – hooknc