[SPRING] varargs를 Spring spEL에 전달하면 "com.sun.proxy에서 메서드를 찾을 수 없습니다."
SPRINGvarargs를 Spring spEL에 전달하면 "com.sun.proxy에서 메서드를 찾을 수 없습니다."
나는 권한 평가를위한 커스텀 클래스를 작성하려고 시도한다. 그래서 이것을 스프링 보안 @PreAuthorize와 Spring Expression Language와 같이 사용할 수있다. (예를 들어 권위는 일부 역할 이름을 가진 일반적인 Spring 구성 요소이다.)
@PreAuthorize("@permissionEvaluator.anyOfRoles(@authority.ADMIN)")
PermissionEvaluator # anyOfRoles 메서드 선언은 다음과 같습니다.
boolean anyOfRoles(String... roles)
이 메소드는 String 형의 varargs를 취한다. 위의 예제에서와 같이 하나의 매개 변수 만 전달되었지만 둘 이상의 인수로 호출하는 경우에는 잘 작동합니다 (예 :
@PreAuthorize("@permissionEvaluator.anyOfRoles(@authority.ADMIN, @authority.USER)")
원인
org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method anyOfRoles(java.lang.String,java.lang.String) cannot be found on com.sun.proxy.$Proxy132 type
던져 질거야. 다음과 같이 String 배열 (기본적으로 구문 해석 설탕 인 varargs와 동일)을 사용하여 호출하면 여전히 작동합니다.
@PreAuthorize("@permissionEvaluator.anyOfRoles(new String[] { @authority.ADMIN, @authority.USER })")
나는 varargs를 spEL과 함께 전달하는 것에 대한 추가적인 정보를 보려고했으나 Spring 문서는 단지 spEL 문서에서 enigmatically 언급한다.
이 예외의 원인은 무엇이며 spEL에서 배열을 전달하는 것보다 다른 해결 방법이 있습니까?
해결법
-
==============================
1.어떤 버전의 Spring을 사용하고 있습니까? 방금 4.3.12로이 테스트 케이스를 실행했는데 제대로 작동했습니다 ...
어떤 버전의 Spring을 사용하고 있습니까? 방금 4.3.12로이 테스트 케이스를 실행했는데 제대로 작동했습니다 ...
@SpringBootApplication public class So46953884Application { public static void main(String[] args) { SpringApplication.run(So46953884Application.class, args); } @Value("#{foo.foo('a', 'b')}") private String foo; @Bean public ApplicationRunner runner() { return args -> System.out.println(foo); } @Bean public Foo foo() { return new Foo(); } public static class Foo { public String foo(String... strings) { return "filled: " + Arrays.toString(strings); } } }
결과:
filled: [a, b]
from https://stackoverflow.com/questions/46953884/passing-varargs-to-spring-spel-causes-method-cannot-be-found-on-com-sun-proxy by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 일반 또는 특정 DAO가 여러 테이블의 정보로 배달을 기록합니까? (0) | 2019.05.28 |
---|---|
[SPRING] aop.xml 이름과 위치? (0) | 2019.05.28 |
[SPRING] 검색 폼에서 데이터 액세스 속도 향상 (0) | 2019.05.28 |
[SPRING] 스프링 mvc 인터셉터를 사용하여 게시 된 값을 변경하는 방법 (0) | 2019.05.28 |
[SPRING] 환경 변수 또는 속성에 따라 PointCut 실행 (0) | 2019.05.28 |