본문 바로가기

웹 개발/Spring Boot

(22)
SpringBoot) ThreadPoolExecutor 기본 개념 ThreadPool 서버가 어플리케이션에서 발생하는 모든 요청에 대해 매번 쓰레드를 생성하면 스레드를 생성하는 과정과 다수의 스레드를 스케줄링하느라 CPU가 바빠져 메모리 사용량이 늘어난다. 이는 전체적인 시스템 성능 저하를 초래하고 자원이 고갈되어 메모리풀로 서버가 다운 될 수 있다. 그래서 쓰레드풀을 사용한다. 쓰레드풀은 쓰레드를 미리 만들어 두고 재사용하는 방식으로 일정 수의 작업을 동시에 처리하도록 한다. 이때 사용될 수 있는 쓰레드 개수를 제한해놓고 작업 큐에 들어오는 작업들을 하나씩 쓰레드에 할당한다. 그리고 쓰레드가 한 테스크를 끝내면 다음 대기 1순위 태스크가 그 쓰레드를 재사용하는 방식으로 쓰레드의 전체 개수에는 영향을 주지 않고 쓰레드를 운영하여 시스템 성능 저하를 방지한다. 자바는 스..
SpringBoot) 파일 다운로드 API 만들기 Controller @GetMapping(value = "") public ResponseEntity fileDownloadApi() throws IOException{ return exampleService.fileDownload(); } Service ... import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; import org.springframework.http.CacheControl; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.sprin..
SpringBoot) 스프링부트에서 Resource를 읽는 방법 https://calgaryhomeless.tistory.com/27 (개념) Spring이 Resource를 가져오는 방법 웹 페이지를 만들다보면 Resource 를 사용할 일이 정말 많아진다. 여기서 주로 사용하는 Resource는 HTML, Javascript, Css, png 등이 있다. 이 Resource를 또 동적인 리소스 (dynamic resource)와 정적인 리소.. calgaryhomeless.tistory.com 핵심내용 컨트롤러에서 스프링부트 프로젝트의 resource 폴더 안의 정적 리소스 파일을 불러올때 다음과 같이 읽는다. 1. URLResource : URL을 기준으로 2. ClasspathResource : classpath를 기준으로 3. FileSystemResourc..
Spring Boot) 여러 포트 사용하기 (멀티 커넥트, 다중 포트) 8080에서도 접근 가능하고 https 적용했을때의 포트인 8443에서도 접근하고 싶다. 이때 멀티 커넥트를 해야 한다고 한다. package com.kpmg.lighthouse.tpplatform.tpplatform; import java.util.Collections; import org.apache.catalina.connector.Connector; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.server.Serv..
Spring Boot) pfx 인증서로 https 적용하기 처음에 cer 파일을 줘서 삽질 엄청하다가 pfx받아서 바로 해결! 내가 pfx로 변경하면 좋을텐데 회사에서 pfx를 받기 위한 절차가 너무 많았다. 삽질한 내용도 같이 남겨야지 cer파일과 crt 파일 .cer 파일 거의 대부분 PEM 포맷이며, 주로 Windows 기반에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. crt 확장자와 거의 동일한 의미이며, cer 이나 crt 확장자 모두 윈도우에서는 기본 인식되는 확장자이다. 저장할때 어떤 포맷으로 했는지에 따라 다르며, 이름 붙이기 나름이다. .crt 거의 대부분 PEM 포맷이며, 주로 유닉스/리눅스 기반 시스템에서 인증서 파일임을 구분하기 위해서 사용되는 확장자 이다. 다른 확장자로 .cer 도 사용된다. 파일을 노트패드 등으로 바로 열..
Spring Boot) BCryptPasswordEncoder 사용해서 사용자 비밀번호 암호화하기 1. 의존성 추가 build.gradle 파일에 의존성을 추가해준다. spring-boot-starter-security dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-security' ... } 2. SpringSecurity.java 이걸 추가하면 웹 처음 화면에 기본적으로 제공해주는 로그인 창이 뜨는데 이건 사용하지 않을 것이므로 컨피그를 아래와 같이 추가해준다. package com.kpmg.lighthouse.tpplatform.tpplatform; import org.springframework.context.annotation.Bean; import org.springframework.contex..
Spring Boot) resources 폴더 내 파일 다운로드 FileService.java @Service("fileService") public class FileService { ... /** * resources/{폴더 이름} 에 저장되어 있는 파일 다운로드 * @param fileName,dirName * @return ResponseEntity */ public ResponseEntity downloadResourceFile(String fileName, String dirName) throws IOException{ Path filePath = Paths.get(File.separatorChar + dirName, File.separatorChar + fileName); Resource resource = new InputStreamResource(ge..
Spring Boot) MaxUploadSizeExceededException 서버 업로드 파일 최대 용량 설정 에러 메시지 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its m..