2014-09-12 3 views
3

컨트롤러에서 전달 된 값을 확인하는 가장 좋은 방법은 무엇입니까?어설트 트와 컨트롤러의 비교

어설 션입니까?

이 샘플 URL이 ....

http://example.com/read/1/2

내가 1, 2 숫자가, 그것이 null인지 여부를 확인하고 싶습니다. 사용자가 URL을 변경 한 경우 http://example.com/read/1asdf/2asdfqwer

우리 회사에서 assert를 사용하고 있습니다. 그리고 이미 프로덕션 모드에 있고 어설 션이 비활성화되어 있으면 어떻게 될지 생각하고 있습니다.

누군가 내게이 사실에 대한 통찰력을 제공합니다.

+0

무엇을 확인 하시겠습니까? 값이 null이 아니거나 다른 것이 있습니까? – coder

+0

이것이 샘플 URL 인 경우 .... http://example.com/read/1/2 1과 2가 숫자인지 확인하거나 null인지 확인하고 싶습니다. – Mnick

+1

psrameters를 'Integer'또는 'Long'으로 지정하고 내부 메소드가 null 허용 여부를 확인합니다. 프로덕션 환경에서 assert를 사용하는 것은 매우 나쁜 습관입니다. – pms

답변

4

assert은 제어 조건을 검사하기위한 디버깅 도구로 사용됩니다. 발생하면 코드에 버그가 있음을 나타냅니다. 사용자가 입력 한 내용을 확인하는 것은이 범주에 속하지 않으며 올바른 프로그램의 기능입니다. 따라서 사용자 입력 검사를 위해 if 문을 사용해야합니다.

1

어설 션은 주로 전제 조건을 확인하는 데 사용됩니다.

주어진 전제 조건이 친구 인 경우 AssertionError과 같습니다. 이런 식으로 전제 조건을 검사하는 것은 실제로 테스트 환경에서 좋은 연습입니다. 우리는 모든 전제 조건이 짝짓기와 만족이라는 것을 확신 할 수 있습니다.

디버그 모드가 아직 활성화되지 않은 경우 프로덕션 환경에서 문제가 발생하지 않습니다. 이 문은 주석 처리 된 것처럼 작동합니다.

컨트롤러 수준에서 허용되는 값만 확인하려는 경우 을 사용하십시오.

그러나 전제 조건으로 확인하고 이러한 전제 조건이 충족되지 않는 경우 오류를 던지려면 이 이상적으로 디버그 모드에 있어야합니다. (AssertionError.) 그러면 어설 션을 사용할 수 있습니다.

1

다음 논리를 사용하는 assert를 사용하는 대신.

@RequestMapping(value = " /read/{var1}/{var2}", method=RequestMethod.GET) 
public String read(@PathVariable Integer var1,@PathVariable Integer var2){ 
    if (var1 ==null || var2 == null) { 
     // do something 
    } 
    return "something"; 
} 

봄용 mvc를 사용하고 있다고 가정했습니다.

관련 문제