[SPRING] @Value가있는 Spring Expression Language (SpEL) : 달러 대 해시 ($ vs. #)
SPRING@Value가있는 Spring Expression Language (SpEL) : 달러 대 해시 ($ vs. #)
# {...}에 비해 $ {...} 사용시기에 대해서는 조금 혼란 스럽습니다. 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
내 질문은 다음과 같습니다.
해결법
-
==============================
1.$ {...}는 속성 자리 표시 자 구문입니다. 속성을 역 참조하기 위해서만 사용할 수 있습니다.
$ {...}는 속성 자리 표시 자 구문입니다. 속성을 역 참조하기 위해서만 사용할 수 있습니다.
# {...}은 SpEL 구문으로 훨씬 더 유용하고 복잡합니다. 또한 속성 자리 표시자를 처리 할 수 있으며 훨씬 더 많은 기능을 제공합니다.
둘 다 유효하며 둘 다 사용되지 않습니다.
-
==============================
2.$ {expr} -> 즉시 평가
$ {expr} -> 즉시 평가
# {expr} -> 지연된 평가
여기에서 완전한 참조
JSP EL은 없으며, JSP는 SpEL을 사용합니다. SpEL은이를 사용하는 기술에 적합합니다.
-
==============================
3.이 기사를 읽으십시오.
이 기사를 읽으십시오.
"해시가 사용되면 코드가 부분 새로 고침 (즉, 렌더링 될 때마다)에 포함될 때마다 코드가 다시 계산됩니다. 달러를 사용하면 페이지가 처음로드 될 때만 코드가 계산됩니다. 해시 또는 달러 후, 중괄호는 언어의 시작과 끝을 의미합니다. 나중에 언어를 결합 할 때 중요합니다. "
-
==============================
4.표현 언어 사양 • 최종 릴리스 - 2006 년 5 월 8 일
표현 언어 사양 • 최종 릴리스 - 2006 년 5 월 8 일
2 쪽:
eval-expression은 $ {expr} 또는 # {expr} 구문을 사용하여 형성됩니다. 양자 모두 구문은 EL에 의해 정확히 같은 방식으로 구문 분석되고 평가됩니다. 그들은 EL을 사용하는 기술에서 다른 의미를 지닐 수 있습니다.
from https://stackoverflow.com/questions/5322632/spring-expression-language-spel-with-value-dollar-vs-hash-vs by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3.1의 기본 프로파일 (0) | 2018.12.16 |
---|---|
[SPRING] 문자열에 대한 Jdbctemplate 쿼리 : EmptyResultDataAccessException : 잘못된 결과 크기 : expected 1, actual 0 (0) | 2018.12.16 |
[SPRING] 봄 범위의 프록시 빈 (0) | 2018.12.16 |
[SPRING] @PathVariable을 사용하여 Spring MVC 컨트롤러를 단위 테스트하는 방법? (0) | 2018.12.16 |
[SPRING] 다중 Spring @RequestMapping 주석 (0) | 2018.12.16 |