복붙노트

[SPRING] Spring이 디버그 정보없이 매개 변수 이름을 얻는 방법

SPRING

Spring이 디버그 정보없이 매개 변수 이름을 얻는 방법

@RequestMapping("/form")
public String form(Model model, Integer id)

예를 들어, spring은 매개 변수 id의 이름이 id이고 런타임에 바인딩 요청 param의 값을 알 수 있습니다.

해결법

  1. ==============================

    1.이것은 JDK 8에 도입 된 javac의 기능입니다. 활성화하려면 -parameters javac 명령 행 옵션을 포함해야합니다. 그러면 다음과 같은 매개 변수 이름을 가져올 수 있습니다.

    이것은 JDK 8에 도입 된 javac의 기능입니다. 활성화하려면 -parameters javac 명령 행 옵션을 포함해야합니다. 그러면 다음과 같은 매개 변수 이름을 가져올 수 있습니다.

    String name = String.class.getMethod("substring", int.class).getParameters()[0].getName()
    System.out.println(name);
    

    Spring 문서에서 3.3 Java 8 (6과 7뿐만 아니라)

    ParameterNameDiscoverer 클래스의 javadoc에 지정된대로 :

    이것은 Spring 프로젝트의 JIRA 관련 항목에 대한 링크입니다. 메소드 및 생성자에 대한 Java 8 매개 변수 이름 검색

    JDK 향상 제안 JEP 118 : 런타임에 매개 변수 이름에 액세스

  2. ==============================

    2.그것은 당신을 위해 그것을하는 WebDataBinder입니다.

    그것은 당신을 위해 그것을하는 WebDataBinder입니다.

    http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/WebDataBinder.html

    API에서 볼 수 있듯이 WebDataBinder는 웹 요청 매개 변수에서 JavaBean 객체로의 데이터 바인딩을위한 것입니다.

    WebDataBinder는 유효성 검사와 변환을 담당하기 때문에 편집기 나 유효성 검사기를 사용자 정의한 경우 컨트롤러의 webDataBinder에 추가해야합니다.

            @Controller
            public class HelloController {
    
                @InitBinder
                protected void initBinder(WebDataBinder binder) {
                    binder.setValidator(yourValidator);
                    binder.registerCustomEditor(the clazz to conver to.class, "the name of the parameter", yourEditor);
                }
        ...
    

    자세한 내용은 문서를 확인해야합니다.

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html

  3. from https://stackoverflow.com/questions/36466913/how-spring-gets-parameter-names-without-debug-information by cc-by-sa and MIT license