Loading...
Spring Framework Reference Documentation 7.0.2의 Varargs Invocations의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring Expression Language는 생성자, 메서드, 그리고 사용자 정의 함수에 대한 varargs 호출을 지원합니다.
다음 예제는 가변 인자 목록을 개별 인자 ('blue', 1)로 제공하여
expression 내에서 java.lang.String#formatted(Object…) varargs 메서드를 호출하는 방법을 보여줍니다.
1// evaluates to "blue is color #1" 2String expression = "'%s is color #%d'.formatted('blue', 1)"; 3String message = parser.parseExpression(expression).getValue(String.class);
1// evaluates to "blue is color #1" 2val expression = "'%s is color #%d'.formatted('blue', 1)" 3val message = parser.parseExpression(expression).getValue(String::class.java)
가변 인자 목록은 다음 예제에서와 같이 (new Object[] {'blue', 1}) 배열로도 제공될 수 있습니다.
1// evaluates to "blue is color #1" 2String expression = "'%s is color #%d'.formatted(new Object[] {'blue', 1})"; 3String message = parser.parseExpression(expression).getValue(String.class);
1// evaluates to "blue is color #1" 2val expression = "'%s is color #%d'.formatted(new Object[] {'blue', 1})" 3val message = parser.parseExpression(expression).getValue(String::class.java)
대안으로, 가변 인자 목록은 java.util.List로 제공될 수 있습니다. 예를 들어,
인라인 리스트
({'blue', 1})로 제공할 수 있습니다. 다음 예제는 그 방법을 보여줍니다.
1// evaluates to "blue is color #1" 2String expression = "'%s is color #%d'.formatted({'blue', 1})"; 3String message = parser.parseExpression(expression).getValue(String.class);
1// evaluates to "blue is color #1" 2val expression = "'%s is color #%d'.formatted({'blue', 1})" 3val message = parser.parseExpression(expression).getValue(String::class.java)
Java에서의 표준 varargs 호출 지원과는 대조적으로, SpEL에서 varargs 생성자, 메서드, 또는 함수를 호출할 때 개별 인자에 타입 변환이 적용될 수 있습니다.
예를 들어, EvaluationContext에 String reverseStrings(String… strings) 시그니처를 가진 메서드에 대해
#reverseStrings라는 이름으로 커스텀 함수를
등록한 경우, 다음 예제에서와 같이 SpEL expression 내에서 String으로 변환될 수 있는
어떤 인자로든 해당 함수를 호출할 수 있습니다.
1// evaluates to "3.0, 2.0, 1, SpEL" 2String expression = "#reverseStrings('SpEL', 1, 10F / 5, 3.0000)"; 3String message = parser.parseExpression(expression) 4 .getValue(evaluationContext, String.class);
1// evaluates to "3.0, 2.0, 1, SpEL" 2val expression = "#reverseStrings('SpEL', 1, 10F / 5, 3.0000)" 3val message = parser.parseExpression(expression) 4 .getValue(evaluationContext, String::class.java)
마찬가지로, 컴포넌트 타입이 요구되는 varargs 타입의 서브타입인 어떤 배열이든지
varargs 호출을 위한 가변 인자 목록으로 제공될 수 있습니다. 예를 들어,
String[] 배열은 Object… 인자 목록을 받는 varargs 호출에 제공될 수 있습니다.
다음 예제는 java.lang.String#formatted(Object…) varargs 메서드에 String[] 배열을
제공할 수 있다는 것을 보여줍니다. 또한 1이 자동으로 "1"로 변환된다는 점을 강조합니다.
1// evaluates to "blue is color #1" 2String expression = "'%s is color #%s'.formatted(new String[] {'blue', 1})"; 3String message = parser.parseExpression(expression).getValue(String.class);
1// evaluates to "blue is color #1" 2val expression = "'%s is color #%s'.formatted(new String[] {'blue', 1})" 3val message = parser.parseExpression(expression).getValue(String::class.java)
Functions
Bean References