programing

Spring Expression Language(SPEL)와 @Value: 달러와 해시($와 #)

telecom 2023. 3. 6. 20:41
반응형

Spring Expression Language(SPEL)와 @Value: 달러와 해시($와 #)

언제 써야 할지 좀 헷갈리네요.${...}비교해서#{...}. 스프링 문서에서는#{...}단, 를 사용하는 예는 많이 있습니다.${...}게다가 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은 이를 사용하는 기술에 적합합니다.

기사를 읽어보세요.그것은 다음과 같습니다.

해시를 사용하면 해당 요소가 부분 새로 고침에 포함될 때마다(즉, 렌더링될 때마다) 코드가 재계산됩니다.1달러를 사용하는 경우, 코드는 페이지가 처음 로드될 때만 계산됩니다.그러나 이는 EL뿐만 아니라 SSJS로도 확장되었습니다.해시 또는 달러 뒤에 있는 컬리 괄호는 언어의 시작과 끝을 나타냅니다.이것은 나중에 언어를 조합할 때 중요할 것입니다.

표현 언어 사양 • 최종 출시 - 2006년 5월 8일

페이지 2:

평가식은 구성 ${expr} 또는 #{expr}을 사용하여 형성됩니다.EL을 사용하는 기술에서는 서로 다른 의미를 가질 수 있지만 두 구조 모두 EL에 의해 정확히 동일한 방식으로 해석되고 평가됩니다.

언급URL : https://stackoverflow.com/questions/5322632/spring-expression-language-spel-with-value-dollar-vs-hash-vs

반응형