@Value가 포함 된 Spring Expression Language (SpEL) : 달러 대 해시 ($ 대 #)
에 ${...}
비해 사용시기에 대해 약간 혼란 스럽 습니다 #{...}
. Spring의 문서는을 사용 #{...}
하지만을 사용하는 많은 예제가 있습니다 ${...}
. 또한 SpEL을 시작할 때 사용하라는 지시를 받았으며 ${...}
정상적으로 작동합니다.
혼란스러워하는 사람들을 위해 내가 그것을 사용하는 방법의 예는
@Component
public class ProxyConfiguration {
@Value("${proxy.host}")
private String host;
@Value("${proxy.port}")
private String port;
:
}
그리고 일부 속성 파일 :
proxy.host=myproxy.host
proxy.port=8000
내 질문은 :
- 차이점은 무엇입니까?
- 한 버전이 더 이상 사용되지 않으므로 다른 버전을 사용해야합니까?
${...}
속성 자리 표시 자 구문입니다. 속성을 역 참조하는 데만 사용할 수 있습니다.
#{...}
인 SpEL을 구 훨씬 더 유능하고 복잡하다. 또한 속성 자리 표시자를 처리 할 수 있습니다.
둘 다 유효하며 더 이상 사용되지 않습니다.
${expr}
-> 즉각적인 평가
#{expr}
-> 연기 된 평가
즉각적인 평가는 표현식이 평가되고 페이지가 처음 렌더링되는 즉시 결과가 반환됨을 의미합니다. 연기 된 평가는 표현 언어를 사용하는 기술이 자체 기계를 사용하여 페이지 수명주기 중 나중에 필요할 때마다 표현식을 평가할 수 있음을 의미합니다.
JSP EL은 없으며 JSP는 SpEL을 사용합니다. SpEL은 그것을 사용하는 기술에 적합합니다.
읽어보십시오 이 문서 제안,
"해시를 사용하는 경우 요소가 부분 새로 고침에 포함될 때마다 (예 : 렌더링 될 때마다) 코드가 다시 계산됩니다. 달러를 사용하는 경우 페이지가 처음로드 될 때만 코드가 계산됩니다. EL뿐만 아니라 SSJS까지 확장되었습니다. 해시 나 달러 뒤에는 중괄호가 언어의 시작과 끝을 나타냅니다. 나중에 언어를 결합 할 때 중요합니다. "
표현 언어 사양 • 최종 릴리스-2006 년 5 월 8 일
2 쪽:
eval-expression은 $ {expr} 또는 # {expr} 구문을 사용하여 형성됩니다. 두 구성은 EL을 사용하는 기술에서 다른 의미를 가질 수 있지만 EL에 의해 동일한 방식으로 구문 분석되고 평가됩니다.
'IT박스' 카테고리의 다른 글
@Nullable 및 @Nonnull 주석을보다 효과적으로 사용하는 방법은 무엇입니까? (0) | 2020.07.20 |
---|---|
iTunes Connect의 "예기치 않은 기계 코드"경고 (0) | 2020.07.20 |
WPF Numeric UpDown 컨트롤은 어디에 있습니까? (0) | 2020.07.20 |
파일 이름에 허용되는 문자 (0) | 2020.07.20 |
AngularJS : HTTP 인터셉터에 서비스 주입 (순환 종속성) (0) | 2020.07.20 |