기술 창고/Spring(25)
-
[Spring Boot] js, css 와 같은 Resources 버전 관리 (feat. 캐시 스택킹 제거)
Spring Boot 프로젝트를 하나의 monolithic 프로젝트로써 MVC 패턴을 적용하여 구현하려고 했습니다.이 때 View 부분은 Thymeleaf 로 구성하였고 정상적으로 페이지가 구현되고 완성되었습니다.하지만 운영 서버에 배포할 때, 초기에 배포한 프로젝트 다음에 js나 css와 같은 Resource 를 수정한 version 2 프로젝트를 다시 재배포하게 되었을 때 업데이트한 Resource들이 정상적으로 반영되지 않고 계속 이전 Resource 내용으로 적용되어 문제가 발생되는 이슈가 있었습니다.이는 Resources들이 갱신되지 않기도 하거니와 서버 캐시 또한 새로고침(?) 되지 않아 발생된 이슈입니다.따라서 이를 해결해주지 않으면 서비스에 접속한 유저들이 일일히 직접 접속한 브라우저나 앱..
2024.11.19 -
[Spring Boot] 서버 자체에 ssl 적용이 아닌 내장 Tomcat에 ssl 적용하여 https 활성화 (jks 파일 기준)
이번에는 nginx 서버나 다른 외부적인 서버 자체의 https 설정이 아닌 배포하여 운영하는 Spring Boot 프로젝트 내부의 내장 톰캣의 설정을 통해 https 설정을 적용해보는 방법을 정리해보겠습니다.또한 제가 하는 방법은 가지고 있는 인증서 jks 파일을 활용한 방법입니다. (1)application.properties 의 경우server.port={프로젝트 운영 포트}server.ssl.enabled=trueserver.ssl.key-password={ssl 인증서 jks파일 비밀번호(있을 경우에만 활성화)}server.ssl.key-store={ssl 인증서 jks파일명}.jksserver.ssl.key-store-type=PKCS12server.ssl.key-store-password=..
2024.08.14 -
[Spring Boot] Spring Profile 을 통한 개발 환경 분산 관리
Spring Boot에서 개발 완료 후 어플리케이션을 실행하여 테스트할 때 현재 개발 환경인지, 실제 운영 환경인지에 따라 설정되는 개발 환경이 다 다를 것입니다.이를 일일히 바꾸기에는 수고스럽기 때문에 이를 제어하기 위한 Spring Profile을 활용하여 편리하게 개발 환경을 변경해주는 작업을 해보겠습니다. # yml 파일로 Profile을 관리할 수 있지만 저는 properties 파일로 진행하였습니다. 우선, 앞서 말한 로컬 개발 환경, 운영 개발 환경 처럼 때에 따라 바뀌는 이러한 환경을 Spring Boot 에서는 Profile이라고 말합니다.이 Profile은 기본적으로 Spring Boot 프로젝트의 properties 파일을 통해 관리해줍니다. 기본적으로 application.prope..
2024.06.21 -
[Spring Boot] 타임리프 문법 - th:href
th:href th:href 는 일반적인 html의 href 속성과 동일한 기능을 수행한다고 볼 수 있습니다. 경로에 접근하여 리소스에 접근하여 호출하거나, 다른 페이지로 이동하거나 할 때 url, 경로와 같은 값을 넣어 사용합니다. a 태그 - api 호출 링크 href 속성을 주로 사용하는 a 태그는 기본적으로 href 속성으로 링크를 시켜 api에 매핑을 시키거나 페이지를 이동하는 동작을 수행합니다. 타임리프는 href 속성에 th 키워드를 붙여 사용하며, 링크를 시킬 api url 주소라든지 이동하고자 하는 페이지의 이동 경로를 기입할 때 "@{링크 경로/주소}" 식으로 기입하여 사용합니다. 위의 예시 코드에서는 @{} 안에 매핑 시켜 호출할 api 주소를 기입하였으며, ${} 기호를 통해 데이터..
2023.11.22 -
[Spring Boot] Thymeleaf (타임리프)
웹에서는 기본적인 HTML을 사용하여 페이지 구조를 설정합니다. Spring에서는 jsp를 구현할 때 기본적인 HTML 뿐만 아니라 타임리프라는 문법을 제공합니다. Spring 만의 독립적인 페이지 구조 구축 문법이라고 볼 수 있습니다. 대부분의 사용법과 구성은 기존의 일반적인 HTML과 동일하다고 볼 수 있습니다만 살짝씩 다릅니다. 타임리프는 흔히 View Template(뷰 템플릿)이라고 부릅니다. 뷰 템플릿은 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해줍니다. 타임리프는 html태그를 기반으로하여 th:속성을 이용하여 동적인 View를 제공합니다. 웹에서 가장 기본이되는 HTML로 진입장벽이 낮고 쉽게 배울 수 있다는 장점이 있습니다. 타임리프 설정 타임리프를 사용하기 ..
2023.11.13 -
[Spring Boot] 로컬 환경 + 배포 서버에 파일 업로드 (trasferTo 사용법)
이미지 파일이나 일반적인 파일, 음악과 같은 파일을 업로드하게 되는 것은 많은 웹 사이트에서 지원해주는 기능이라고 볼 수 있습니다. 카페에 게시글을 올리거나 스크린샷을 올리거나 커뮤니티 사이트에서 파일을 업로드해서 내용을 공유하는 식으로 일상에서 흔히 볼 수 있는 기능입니다. 이 파일 업로드 기능에 대해서 로컬과 배포 서버에서 구현하는 과정에 대해서 정리해보고자 합니다. view 단 jsp, html 이 존재하고 클라이언트가 해당 페이지에서 문의 파일과 함께 문의 작성 요청을 보내 문의 작성을 수행한다는 전제하에 정리해보겠습니다. 1. API 구성 Controller @PostMapping("/contact/inquiry") public RedirectView contactInquiry( Multipar..
2023.10.19