Scenario
내 프로젝트에서 commons.jar 내부에 있는 commonController의 로직을 바꾸고 싶었다. 내 프로젝트 내부에서 새로 정의한다면 오버라이드 되지 않을까? 하고 생각해보았다.
Solution
class load scenario
예를 들어보자. 만약 내 프로젝트의 이름은 test이고 test 프로젝트 내부에서 a.jar에 대한의존성을 추가하였다.
a.jar 내부에있는 com.a.a 라는 class가 있었다.
test 프로젝트 내부에서 com.a.a 라는 경로와 똑같이 class를 만든다면 어느 class가 load가 될까?
-> 정답은 배포되었을시에 web-inf에 있는 classes 폴더에있는 것들이 최우선순위로 load 되고 그다음부터는 lib 내부에 있는 jar들이 알파벳 순서에따라 class가 loadㄷ가 된다.
참고사항: tomcat 실행시 java -verbose:class 옵션을주면 어느 jar에서 load 되었는지 알게해줌
+추가 공부내용: 배포될때 WEB-INF/classes 폴더는 classpath와 관계가 있으니 잘 확인해볼 것
'To be Developer > Etc' 카테고리의 다른 글
3-way handshake 4-way handshake는 왜 필요할까? (0) | 2019.11.24 |
---|---|
[Git] pull, merge, rebase 차이 및 옵션 (0) | 2019.11.06 |
Eclipse STS 튜닝 STS.ini (Freeze 현상 해결을위한) (2) | 2019.05.01 |
오픈소스나 소스 라이브러리 release 시 GA, SNAPSHOT의 의미 (0) | 2019.04.12 |
[ETC 펌] 보일러 플레이트 코드란? (1) | 2018.03.05 |