Back-End/SpringBoot (14) 썸네일형 리스트형 [SpringBoot] 병렬, 비동기 처리 wiki * 이해한 만큼만 정리 parallelStream 비동기 처리는 아니고 병렬 처리 쓰레드 수가 임의로 지정되기 때문에 위험 짧게 끝날 수 있는 병렬 처리에 사용해야겠다고 결심 List storeList = storeListPage.getContent(); storeList.parallelStream() .forEach( store - > { ... }); ExecutorService 스레드 풀을 생성하고 관리할 수 있음 execute() : 반환 값 없을 때 submit() : 반환 값 있을 때 스레드 반환 shutdown() 필수 private void scrapExecuteAsync(List keywords) { ExecutorService executorService = Exec.. [SpringBoot] Executors.newFixedThreadPool() 코드의 이슈(자원 반환해주기) Executors.newFixedThreadPool() 사용목적 Executors.newFixedThreadPool() 메서드는 지정된 개수의 스레드가 있는 고정 크기의 스레드 풀을 생성할 수 있도록 하고, 이 스레드 풀은 비동기 작업을 처리하는 데 사용한다. 아래와 같이 CompletableFuture과 함께 사용했다. private void scrapExecuteAsync(List requestList) { ExecutorService executor = Executors.newFixedThreadPool(6); List futures = new ArrayList(); requestList.forEach(request -> { CompletableFuture future = CompletableFut.. [SpringBoot/Java17] Java 17 Record 활용(nested class, @Builder 사용, Class와 비교) 이번에 들어간 신규 프로젝트는 Java 17 버전을 사용하기로 했다. 사용하기 전에 java 17 새로운 기능들을 좀 찾아보니 그나마 record를 잘 활용할 수 있겠다고 생각했다. Java 17 새로운 기능 https://springframework.guru/what-is-new-in-java-17/ What is New in Java 17? - Spring Framework Guru A number of new features have been added to the Java programming language in the Java 17 release. In this post learn about what's new! springframework.guru https://e-una.tistory.co.. [SpringBoot] Exception Handler에 return 값을 ResponseEntity로 하지 않으면? ExceptionHandler 코드를 작성하는 도중 의문점이 들었다. 왜 꼭 "ResponseEntity"로 return 해야 하는지. 그냥 "ErrorResponse"로 해도 같은 형태로 응답이 오던데,,, 문제는 바로 HttpStatus였다. Error인데 200으로 응답되더라! ResponseEntity에 status 잘해서 넘겨주기. @ExceptionHandler(CommonException.class) public ResponseEntity customJwtException(CommonException e) { e.printStackTrace(); log.warn("CommonException : {}", e.getResponseCode().getDescription()); return Res.. [SpringBoot/Java17] java 17 SunJCE 오류 해결(vm option 추가) 문제 신규 프로젝트에 java 17 버전을 적용하면서 java 11 버전을 사용할 때 문제 없이 썼던 모듈에서 아래와 같은 오류가 났다. java.lang.IllegalAccessError:cannot access class com.sun.crypto.provider.SunJCE (in module java.base) because module java.base does not export com.sun.crypto.provider to unnamed module @0x4f209819 원인 모듈 공급사에 문의하니 java 11 이후부터 JCE가 기본적으로 load 되지 않아서 생긴 문제이며 아래 옵션을 추가해서 실행해보라는 답변을 받았다. --add-exports java.base/com.sun.cryp.. [SpringBoot] version upgrade version upgrade 이유 회사에는 운영된 지 3년 된 서비스가 있다. 그래서인지 20개가 넘는 환경변수를 직접 서버 운영하는 곳에서 입력해주는데 관리가 어려워서 운영 중인 config server를 이 서비스에도 적용하고자 했다. config server를 읽어오기 위해 spring-cloud-starter-config, spring-cloud-starter-bootstrap dependency도 추가했는데 bootstrap에 있는 profile 세개를 다 불러오면서 정상 작동되지 않았다. version upgrade id 'org.springframework.boot' version '2.3.0.RELEASE' -> id 'org.springframework.boot' version '2.4... [SpringBoot/QueryDsl] java.lang.IllegalArgumentException: Multiple entries with same key 원인 select 같은 컬럼을 두번 조회해서 생긴 문제 [SpringBoot] e.getStackTrace() 출력 결과 차이 log.error("stackTrace={}", e.getStackTrace()); 에러내용 stackTrace=kr.co.test.controller.TestController.responseFail2(TestController.java:24) 기존에 getStackTrace하면 이렇게 간단하게만 나온다. log.error("reason={}, stackTrace={}", e.getCause(), e.getStackTrace()); 에러내용 reason= null, stackTrace=[kr.co.test.controller.TestController.responseFail2(TestController.java:24), java.base/ jdk.internal.reflect.NativeMethodAc.. 이전 1 2 다음