스프링 작업 중 AOP 클래스의 하나인 ProceedingJoinPoint를 사용하려고 하는데 import가 안되어서 방법을 찾아봤습니다.
기본적으로는 Maven에서 Dependency가 제대로 설정이 되지 않을 경우 자주 볼 수 있는 에러인데 이번에는 설정이 되어 있는데도 오류가 발생하였습니다.
1. 오류 확인
다른 AOP 태그들은 문제없이 사용할 수 있었는데, ProceedingJoinPoint만 문제가 있었습니다.
import org.aspectj cannot be resolved라고 나옵니다.
2. Maven 설정 확인
먼저 메이븐을 살펴봤습니다.
AOP를 사용하기 위해서는 aspectjrt와 aspectjweaver 두 가지 jar가 필요합니다.
만약 aspectjweaver.jar가 빠졌다면 Maven Dependency에 추가해주면 됩니다.
2.1 Maven 설정 추가 및 확인
수정 전
Maven 설정에 추가되어 있는데도 오류가 발생하는 경우가 있습니다.
설정에서 <scope>가 runtime으로 설정되어 있으면 오류가 발생합니다.
이 부분을 다른 옵션 값으로 수정하거나 삭제해주면 오류가 해결이 됩니다.
수정 후
저는 간단하게 runtime 옵션을 삭제했습니다.
<scope> 옵션의 기본 값이 compile이기 때문입니다. compile은 컴파일, 배포 양쪽 모두 포함되는 설정입니다.
만약 Maven Depedency에 설정이 되어 있고, jar 파일도 확인이 되는 데 오류가 발생하는 경우라면, <scope> 옵션을 확인하고 runtime이라면 제거해주시면 됩니다.
위 설정은 Maven 홈페이지의 설정을 가져온 것입니다. 기본 설정은 <scope>를 runtime으로 제공하는데 만약 개발 중이라면 runtime 옵션을 손보면 해결할 수 있습니다.
참고. Maven <Scope> 옵션 값
Scope 옵션 | 설명 |
compile | - 기본 Scope, 미입력시에 적용. - 모든 상황(컴파일,배포)에서 포함한다. |
provided | - 컴파일 시점에는 포함, 배포 시점에 제외 - 운영환경에서 jar파일 중복 문제가 발생할 경우 이 옵션으로 설정 예) JDK, Servlet API, Java EE API 등은 운영환경 및 WAS의 jar 사용 |
runtime | - 컴파일 시점에는 제외, runtime 시점에 포함 |
system | - Maven Repository에서 검색하지 않고 시스템 내에 명시된 위치의 jar를 사용 - systemPath 엘리먼트 사용 - provided처럼 컴파일 시점에만 포함 |
test | - 테스트 컴파일과 실행 시점에만 사용 예) easymock, JUnit 등 |
import | - Maven 2.0.9 이후에서만 적용 - 다른 POM 설정 파일에 정의되어 있는 의존 관계 설정을 현재 프로젝트에 적용. - <dependencyManagement>에서만 사용할 수 있음. |
'DevOps > Spring' 카테고리의 다른 글
[Spring] 이클립스, 스프링 환경에서 Junit4, Junit5 를 사용해 DAO 테스트 하기 (0) | 2022.06.17 |
---|---|
[Spring] @Resource 어노테이션이 import가 안될 경우 (0) | 2022.06.12 |
[Spring] log4j.xml 오류 : Cannot find DTD (0) | 2022.06.10 |
[Spring] web.xml 오류 : Invalid element name: - description (0) | 2022.06.08 |
댓글