특히, getValue (StandardEvaluationContext, Class)는 다른 SpelExpression에서 여러 컨텍스트로 안전하게 호출 할 수 있습니까?은 SpelExpression 스레드로부터 안전합니까?
이 질문을 보았고 Spring Source의 Gary Russell이 대답했습니다. 그러나 동시성 문제를보고하는 사람들도 있습니다. 관련 Spring 클래스의 소스 코드를 살펴 봤는데 확신 할 수 없습니다.
나는 스프링 - 엘에서 일한 스프링 개발자 또는 심하게 동시적인 환경에서이 클래스를 사용한 스프링 사용자로부터 분명한 답을 얻고 싶습니다.
감사합니다.
보증에 감사드립니다. Gary. 이것이 우리가하는 일입니다. 비공개 표현 exp = new SpelExpressionParser(). parseExpression ("# msg [ 'direction'] == '구매' ')); // 위의식이 다음 메서드에서 사용되는 것처럼 스레드로부터 안전하도록 해주십시오. // 공개 부울 패스 (Map 메시지) { StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable ("msg", message); return exp.getValue (context, Boolean.class); } –
user3826255
다시 한 번 감사드립니다. Gary. 서식이 어떻게 든 작동하지 않습니다. – user3826255
예, 매번 새로운 평가 컨텍스트를 작성하기 때문에 문제가 없습니다. 그러나 하나의 변수'msg' 만 있기 때문에 공유 컨텍스트를 사용하고'[ 'direction'] == 'BUY' '('msg'는'# root' 객체입니다.) getValue (context, msg , Boolean.class)'. –