인정해
50
2022-05-20 13:41:27
5
129

[Spring Boot]어노테이션이 붙어있는 field의 필드 변수명을 가져올 방법은 없나요?


현재 Valid관련 어노테이션을 만드는 중인데요


@CustomValid( ... )

private String seq; 


이런식으로 선언되어있을때 'seq'라는 값을 받을 방법이 없을까요?

오류 메세지에서 유효하지 않은 값입니다 : seq 이런식으로 명시적으로 알려주고 싶은데

seq value값은 받을 수 있어도 저 'seq'자체를 받을 수 있는 방법을 못찾겠습니다....


class를 파라미터로 넣어서 reflection하는 방법 말고

파라미터가 없어도 넘길 없을까요?


0
  • 답변 5

  • piggykm
    138
    2022-05-20 13:47:03

    @CustomValid에 변수 추가 하시면 안되나요? 그게 아니면 리플렉션 말고는 기억이 안나네요

  • 인정해
    50
    2022-05-20 13:50:52

    @piggykm

    그것도 가능한데 자동화가 하고 싶어서요. 혹시 HandlerMethodArgumentResolver 같은 관련 전략 인터페이스가 있나 궁금했습니다

  • yeori
    4k
    2022-05-20 13:53:11


    public class Job {
      @ValidSeq
      private String seq;
    }

    이런 클래스가 있다고 치고요...

    @ValidSeq 가 붙은 필드를 찾아내려면 아래와 같이 필드에 ValidSeq가 붙었는지 찾으면 될겁니다.

      public void validateSeq(Job job) {
        Field [] fileds = Job.cass.getDeclaredFields();
        for( ... ) {
          Field each = fileds[i]; // 
          ValidSeq annoSeq = each.getAnnotation(ValidSeq.class);
        }
      }

    annoSeq가 null이 아니면 each라는 필드에 @ValidSeq라고 붙어있다는 뜻입니다.

  • piggykm
    138
    2022-05-20 13:59:58

    인정해

    없나보네요

    https://stackoverflow.com/questions/14944333/get-name-of-a-field

  • 인정해
    50
    2022-05-20 14:04:16

    --답변해주신 두 분 다 감사합니다. 그냥 파라미터로 넣어야겠어요

  • 로그인을 하시면 답변을 등록할 수 있습니다.