[SPRING] Spring이 속성 파일에서 삽입 될 때 SpEL 표현식의 모든 문자 / 표현식을 평가할 수 있습니까?
SPRINGSpring이 속성 파일에서 삽입 될 때 SpEL 표현식의 모든 문자 / 표현식을 평가할 수 있습니까?
Spring이 속성 파일에서 @PreAuthorize (...) 주석으로 주입 될 때 왜 모든 식을 직접 평가하지 않는지 궁금합니다. 스프링이 '(', ')', '' '등과 같은 일부 문자를 평가하지 않거나 속성 파일에서 삽입 된 값 위에 특수 문자를 추가한다고 생각합니다. 명확히하기 위해 다음 예제를 고려해 보겠습니다.
@PreAuthorize("hasRole('ROLE_ADMIN')")
위의 표현은 정상이며 잘 작동합니다. 특성 파일의 값이 다음과 같다고 가정하십시오.
role1=ROLE_ADMIN
role2='ROLE_ADMIN'
role3=hasRole('ROLE_ADMIN')
내 결론 :
위의 (1)과 (2)에서 우리는 한 가지를 깨닫게됩니다. 즉, 삽입 된 값이 @PreAuthorize (...) 주석에 전달 될 때 작은 따옴표 ( ')로 표시되는 것 같습니다. 이 진술이 사실이 아니라면 (1)과 (2)는 효과가 없을 것입니다. 그것의 다만 나의 결론!.
(3)에 이르면 (1)과 (2)와 비슷한 것처럼 보입니다. 파일의 값은 "hasRole ( 'ROLE_ADMIN')"입니다. 이 값을 올바르게 삽입 한 후 @PreAuthorize (...)에 전달하는 동안 작은 따옴표를 추가하면 @PreAuthorize ( " 'hasRole ('ROLE_ADMIN ')'")와 유사합니다. 그래서 " 'hasRole ('ROLE_ADMIN ')'"은 부울 값이 아닌 문자열입니다. 내 용의자.
의문:
내 결론이 맞는 것 같니? 그렇지 않다면, 제가 놓친 뭔가가 있다면 저를 지적 해 주시겠습니까? 또는 속성 파일에서 값을 주입하여 @PreAuthorize (...)를 달성 할 수있는 대체 솔루션이 있다면 저에게 알려주십시오.
미리 감사드립니다.
참고 : 구성이나 주입 문제가 아닙니다. 값이 올바르게 주입되었는지 확인했습니다.
해결법
-
==============================
1.대답의 핵심은 SpEL에서 String 리터럴을 나타내는 방법입니다. 다음 내용이 유효합니다.
대답의 핵심은 SpEL에서 String 리터럴을 나타내는 방법입니다. 다음 내용이 유효합니다.
이제 위의 예를 살펴 보겠습니다.
from https://stackoverflow.com/questions/19836387/can-spring-evaluate-all-characters-expressions-in-spel-expressions-as-they-are-i by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 동일한 유형의 사용자 정의 리졸버가 추가 될 때 기본 인수 분석기에서 어떤 일이 발생합니까? (0) | 2019.04.28 |
---|---|
[SPRING] PersistentEntityResourceAssembler를 사용하는 사용자 지정 RepositoryRestController 테스트 (0) | 2019.04.28 |
[SPRING] 컬링 경로를 통해 Amazon S3에 업로드 (0) | 2019.04.28 |
[SPRING] 최대 절전 모드와 @ 트랜잭션을위한 스프링 데이터 소스 설정하기 (0) | 2019.04.28 |
[SPRING] Vaadin / Spring 애플리케이션에서 정적 리소스를 제공하는 방법은 무엇입니까? (0) | 2019.04.28 |