Spring Boot에서 JSP 사용을 권장하지 않는 이유

Spring Boot는 빠른 개발과 간편한 설정으로 거의 업계 표준이 되어가고 있는 프레임워크입니다. 하지만 JSP와 함께 사용될 때는 여러가지 문제가 발생합니다. 

Spring Boot 공식 문서에서도 JSP 사용을 권장하지 않는다는 내용이 있습니다. 어떤 문제가 있고, 대안은 무엇인지 자세하게 알아보도록 하겠습니다.


JAR 패키징 문제

ㆍJSP 파일을 JAR 파일에 포함 시키려면 별도의 설정을 해야 한다.

ㆍ실행 시 JSP 파일을 찾지 못해 에러가 발생하는 경우가 많다.

ㆍ결국 JAR 패키징 대신 WAR로 패키징 해야 하는데 이렇게 하려면 외장 WAS를 설치해야 하고, 배포할 때마다 WAR 파일 업로드 WAS 재기동 등의 작업이 추가적으로 발생한다.


WAS 호환성 문제

ㆍUndertow : 공식적으로 JSP를 지원하지 않는다.

ㆍJetty : JSP를 지원하지만 추가 설정이 필요하고, 일부 기능에 제한이 있을 수 있다.

※ 이외에도 새로운 WAS가 나온다면 JSP를 지원하지 않을 확률이 높다.


복잡한 초기 설정

ㆍJSP 사용을 위한 라이브러리 의존성 추가가 필요하다.

ㆍJSP 파일은 /src/main/webapp/WEB-INF 폴더 하위에 위치해야 인식이 되기 때문에 폴더를 직접 수동으로 생성해줘야 한다.


비즈니스 로직이 뷰에 섞일 가능성이 생김

JSP는 Java 소스를 직접 넣을 수 있다. 서버의 API를 호출하지 않고, 직접 뷰에 API를 개발해버릴 수도 있게 되는 것이다. JSP의 단점 중 가장 많이 언급되는 부분이다.


Hot Reload 완벽하게 안됨

spring-boot-devtools를 사용하면 HTML, CSS, JavaScript 등의 정적 파일이 변경될 때 마다 자동으로 반영되게 할 수 있는데 JSP는 이게 잘 안된다.


비효율적인 렌더링 성능

JSP는 서블릿으로 변환 후 컴파일 되는 과정이 있으므로 다른 템플릿 엔진에 비해 렌더링 성능이 떨어진다.


Spring Security 적용이 불편함

다른 템플릿 엔진은 Spring Security와의 통합이 자연스렵게 되지만 JSP는 추가적인 설정이 필요하고, 소스 코드도 길어진다.


결론 : 더 나은 대안을 선택해야 합니다.

신규 개발 시에는 JSP를 선택할 이유가 없습니다. React, Vue 등의 SPA 프레임워크를 도입하거나 Thymeleaf나 FreeMarker, Mustache 등의 템플릿 엔진을 사용해야 위에 언급했던 단점들을 피할 수 있습니다.


댓글 쓰기

다음 이전