Blog Content

    티스토리 뷰

    [Spring] 클래스 패스 알기

    classpath


    빌드 전과 빌드 후가 다르다.


    빌드 결과도 gradle과 maven도 다르다.


    우리가 확인해야 할 것은 jar 파일. 실제 실행되는게 jar파일이기 떄문


    hello-shop-0.0.1.SNAPSHOT.jar 를 확인해보자


    jar를 압축 해제하면 나타나는 파일계층이 실제 classpath라고 보면 된다.




    META-INF


    먼저, META-INF는 jar에 대한 메타 데이터.


    그 안에 MANIFEST.MF는 중요한 파일이다.


    start class, library 위치 등의 정보가 있다.


    여기서 classpath를 알 수 있다.




    BOOT-INF/classes


    여기가 classpath이다! 여기를 기준으로 경로를 잡으면 된다.


    그렇다면 원래 resources의 위치는 static아래 위치하고 있다.


    하지만 그렇게 classpath를 잡으면 참조되지 않는다.


    왜일까?




    Spring이 먼저 로드되기 때문에!



    소스코드가 올라가기 전에 먼저 Spring이 올라간다.


    이때 Spring이 resource의 위치를 미리 잡아준다.


    https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


    이 페이지에서  "spring.resources.static-locations" 를 검색해보자.


    spring에서 이미 /static/ 폴더를 classpath로 잡아 놓은 것을 알 수 있다.


    여기서 이 값을 원하는 대로 바꿀 수 있다. 



    Comments