728x90
회사 코드를 짜다가 문득 생각이 하나 들었는데 Java 에서 @RequestParam(Required = false) 대신 Optional<Int> Long id 이런식으로 사용하면 동일하게 작동할 수 있다는 사실을 알고 있었다. 이것이 가능한 이유는 Spring Framework 의 RequestParamArgumentResolver 코드에 아래와 같은 코드가 존재한다.
여기서 중요한건 parameter.nestedIfOptional 인데 해당 Type 이 옵셔널인지 확인해주는 코드이다.
그래서 코틀린에서도 ?(nullable-type) 을 통해서 충분히 가능하지 않을까 생각하고 동일 위치에 디버그를 찍어보았다.
위의 디버깅 결과가 결론을 말해주는데
즉, 코틀린에서는 required = false 를 사용할 이유가 없다.
왜냐하면 isOptional() 이라는 메소드에서 Nullable 한 Type 의 값도 Optional 하게 체크되기 때문이다.
참고 하고 싶다면 Optional 은 아래와 같이 체크된다.
728x90
'Spring' 카테고리의 다른 글
기존에 있던 Object 를 Bean 으로 등록하는 방법 (0) | 2022.04.05 |
---|---|
[JPA] Transactional read only 일때 성능상 이점 (0) | 2022.03.21 |
Hibernate 1 차 Cache 에 대해서 알아보자 (0) | 2022.03.10 |
MySQL 으로 형태소 분석기 없는 자동완성만들기 (0) | 2022.02.24 |
Spring 에서 왜 Private Method 는 Cglib Proxy 에 포함이 되지않을까? (0) | 2022.02.22 |