복붙노트

[SPRING] 주석 속성의 값은 상수 표현이어야합니다.

SPRING

주석 속성의 값은 상수 표현이어야합니다.

나는 스프링 애노테이션으로 읽은 속성 파일을 가지고있다.

    @Value("${platform}")
    private String platform;

플랫폼 매개 변수를 얻은 후에 플랫폼 매개 변수 값에 따라 두 번째 매개 변수를 읽으 려합니다.

    @Value("${url." + platform + ."ws}")
    private String url;

그러나 이것은 "annotation 속성의 값은 상수 표현이어야합니다"라는 오류를 발생시킵니다. "플랫폼"값에 따라 많은 매개 변수 변경이 있으므로 일반 솔루션을 찾고 있습니다.

해결법

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

    1.이 매개 변수는 컴파일 타임에 평가됩니다. 그래서 다른 사람들 (즉, 열거 형) 사이에서 최종 또는 정적 최종이어야합니다.

    이 매개 변수는 컴파일 타임에 평가됩니다. 그래서 다른 사람들 (즉, 열거 형) 사이에서 최종 또는 정적 최종이어야합니다.

    @Value 주석으로 허용되는지 여부는 알 수 없습니다. 그러나 언제나 자신 만의 어노테이션을 구현할 수 있습니다. 확장은 Java 주석에서 가능하지 않습니다.

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

    2.@Value 표현식에서는 플랫폼에 직접 액세스 할 수 없지만 Spring Expression Language를 사용하여 최종 목표를 달성 할 수 있습니다.

    @Value 표현식에서는 플랫폼에 직접 액세스 할 수 없지만 Spring Expression Language를 사용하여 최종 목표를 달성 할 수 있습니다.

    @Value("${platform}")
    private String platform;
    
    @Value("#{'Url.'.concat(${platform}).concat('.ws')}")
    private String url;
    
  3. from https://stackoverflow.com/questions/7926596/value-for-the-annotation-attribute-must-be-constant-expression by cc-by-sa and MIT license