-
Spring AOP에서 만난 예상치 못한 오류 --enable-preview개발 기록 2023. 3. 15. 11:39728x90
Spring에서 Aspect 작성 중(끝난 후) 만난 예상치 못한 오류에 대한 정리이다.
1. 환경
java 17
spring boot 2.7.6
spring-boot-start-aop 사용
intelliJ 사용
2. 오류 내용
로컬에서 실행은 되지만 jar 파일 생성시 테스트실패 오류가 나타난다.
../../target/surefire-reports를 확인해보라고 빨간 글자가 나타난다.
대충 내용을 요약하면
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.675 s <<< FAILURE!
...
Try running with '--enable-preview'3. 원인
--enable-preview를 사용하라는 것은 현재 버전에서는 지원되지 않는 무언가를 사용했다는 것이다.
4. 해결방법
우선 시키는대로 --enable-preview를 해봤지만 해결되지 않았다.
원인이 되는 코드로 향해서 코드를 다시 확인한다.(에러가 발생한 곳은 surefire-reports에 써있다)
예제로 작성한 코드 입니다. ---------------------- @Aspect @Component public class History { @After("@annotation(com.abc.abcd.aspect.history.AddHistory)") public void addHistory(JoinPoint joinPoint) { ... String abc = switch ("A") { case "A" -> "AA"; case default -> "defalut"; }; ... } }
오류를 발생시킨 부분은 새로운 switch 문법이었다. (java12부터 도입)
java 17을 적용시켜놨는데 aspect에서는 새로운 switch 문법이 jar 패키징시 오류를 발생시켰다.
모든 부분을 테스트 해본 것은 아니지만 aspect 이외의 곳에서는 잘 작동했다.
그래서 가장 간단한 해결방법은 이전 문법을 사용한다.
String abc; switch ("A") { case "A": abc = "AA"; break; default: abc = "defalut"; break; }
728x90반응형'개발 기록' 카테고리의 다른 글
Spring Boot[2.x.x] is not compatible with this Spring Cloud release train (0) 2023.04.03 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration (0) 2023.03.27 DB 이중화하기 with Spring AOP (0) 2023.03.19 r2dbc-pool. R2dbcNonTransientResourceException: Connection validation failed (0) 2023.03.14 Webflux + Jwt(es256) (1) 2023.03.14