[SPRING] 속성 파일에서 값을 가져 와서 주석에 사용하는 방법?
SPRING속성 파일에서 값을 가져 와서 주석에 사용하는 방법?
엔티티 클래스가 있습니다.
Class.java
@Entity
public class Class {
@Id
@GeneratedValue
private Long id;
@NotNull
@Range(min = 0, max = 10)
private double value;
}
@Range 주석에서 하드 코딩 된 값을 없애고 구성 파일에서로드하려고합니다.
constraints.properties
minVal=0
maxVal=10
이것이 제가 시도한 것입니다 :
@Component
@Entity
@PropertySource("classpath:/constraints.properties")
public class Class {
@Value("${minVal}")
private final long minValue;
@Value("${maxVal}")
private final long maxValue;
@Id
@GeneratedValue
private Long id;
@NotNull
@Range(min = minValue, max = maxValue)
private double value;
}
내가 얻는 오류는 속성 값이 일정해야합니다. 내가 원하는 결과를 얻기 위해 이러한 필드의 초기화가 어떻게 수행되어야합니까?
해결법
-
==============================
1.첫 번째 : 최종 필드에 값을 주입하려면 생성자 주입을 사용해야합니다.이 질문을 참조하십시오.
첫 번째 : 최종 필드에 값을 주입하려면 생성자 주입을 사용해야합니다.이 질문을 참조하십시오.
즉, 알 수없는 값을 생성자에 전달합니다.
값은 변경되지 않지만 컴파일러는 런타임에 결정되므로이 값을 알 수 없기 때문에 값이 일정하지 않습니다. 또한 컴파일 타임에 값을 결정할 수있는 주석의 값으로 만 표현식을 사용할 수 있습니다.
단일 인스턴스가 아닌 클래스에 대해 어노테이션이 선언 되었기 때문에 그 예가 가능합니다. 예에서 변수의 값은 모든 인스턴스마다 다를 수 있습니다.
그래서 저는 여러분이 성취하고자하는 것이 불가능하다고 말합니다.
from https://stackoverflow.com/questions/33586968/how-to-import-value-from-properties-file-and-use-it-in-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Java에서 yaml로부터 맵 읽기 (0) | 2019.01.23 |
---|---|
[SPRING] Transfer-Encoding 제거 : POST 요청에 청크가 있습니까? (0) | 2019.01.23 |
[SPRING] Spring 속성 파일에서 Escape 속성 참조 (0) | 2019.01.23 |
[SPRING] Java Spring WS org.springframework.ws.soap.saaj.SaajSoapEnvelopeException : 봉투에 액세스 할 수 없습니다. (0) | 2019.01.23 |
[SPRING] 봄 사회적인 페이스 북의 로그인 오류 - int 값의 범위 밖의 숫자 값 (0) | 2019.01.23 |