웹 JAR

웹 JAR란 클라이언트에서 사용하는 js 라이브러리를 jar로 제공하는 기능이다. 스프링부트는 웹 JAR에 대한 기본 매핑도 제공한다. 템플릿을 이용하여 동적 컨텐츠를 생성하거나 정적 리소스에서도 웹 JAR에 있는 css나 js를 참조할 수 있다.

실습: 제이쿼리를 웹 JAR로 추가하기

제이쿼리를 웹 JAR로 추가해보자. 웹 JAR는 메이븐 중앙저장소에서도 제공한다. 해당 저장소에서 jQuery를 검색한 뒤, 원하는 빌드툴의 코드를 복사하여 의존성을 추가한다.

<!-- https://mvnrepository.com/artifact/org.webjars.bower/jquery -->
<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>jquery</artifactId>
    <version>3.2.1</version>
</dependency>

의존성을 추가한 뒤, 정적 리소스지원에서 실습했던 /resources/static/hello.html 파일에 제이쿼리를 추가해보자.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
Hello Static Resources
<script src="/webjars/jquery/3.2.1/dist/jquery.min.js"></script>
<script>
    $(function() {
        alert("ready!");
    });
</script>

</body>
</html>

앱을 실행한 뒤 해당 리소스 요청을 보내면 hello.html 파일이 응답되고, 제이쿼리의 ready이벤트가 실행되면서 "ready"라는 문자열이 출력된다.

버전이 변경되면?

webjars-locator-core 의존성을 추가하면 리소스에서 webjars를 사용할 때, 버전을 생략할 수 있다. 이런 버전생략이 가능한 원리스프링에서 제공하는 리소스 체이닝이라는 기술과 관련이 있다. 리소스 트랜스포머를 체이닝하는 기능이 이러한 버전 생략을 가능하게 해준다. 깊게 알아야할 내용은 아니지만 버전 생략이 가능하다 라는 정도만 알아두면 좋을 것 같다.

해당 포스팅은 스프링 부트 개념과 활용 강의 내용을 토대로 작성하였습니다.