Spring
-
SpringBatch) 스프링 배치 5의 변경점Spring 2024. 3. 31. 13:43
스프링 배치 강의를 듣고 최신 스프링 배치 5를 이용해서 테스트를 하다보니 몇가지 변경점이 있어 정리해보았다! 스프링 배치의 변경점은 아래 공식 문서에서 자세히 확인할 수 있다! https://docs.spring.io/spring-batch/reference/job/configuring.html#%EF%BB%BF Configuring a Job :: Spring Batch If a group of Jobs share similar but not identical configurations, it may help to define a “parent” Job from which the concrete Job instances can inherit properties. Similar to class inhe..
-
SpringBatch) 스프링 배치 간단 정리Spring 2024. 3. 31. 13:32
인프런 강의를 듣고 어카운트 테드 (회사) 시간에 간단 스프링 배치로 정리해서 발표를 진행했는데, 해당 내용을 블로그에도 정리한다. 강의의 출처는 인프런에 있는 정수원 강사님의 스프링 배치다! https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98 스프링 배치 | 정수원 - 인프런 정수원 | 초급에서 중~고급에 이르기까지 스프링 배치의 기본 개념부터 API 사용법과 내부 아키텍처 구조를 심도있게 다룹니다. 그리고 스프링 배치 각 기능의 흐름과 원리를 학습하게 되고 이를 www.inflearn.com Architecture Application 개발자가 만든 모든 배치 Job 과 커스텀 코드 Batch core Job을 ..
-
Spring에서 HttpServletRequest의 반복적 읽기 (feat. Filter에서는 request 교체가 가능한 이유)Spring 2023. 8. 22. 22:30
이전에 정리했던 내용을 리더님에게 피드백 받으면서 한가지 추가적인 피드백을 받게 되었다. Interceptor와는 다르게 Filter에서는 request / response 값을 조작하는 것이 가능하다는 표를 넣었는데, Http request를 다른 값으로 바꿔칠 수는 있지만 request의 내부 parameter값을 조작하는 것은 Filter에서라도 불가능 하다는 것을 추가로 배웠다. 또, 추가로 HttpServletRequest가 반복적으로 읽기가 불가능 하다는 피드백을 받아 추가 공부를 해보았다! Filter에서는 request의 교체가 가능한 이유 먼저 Interceptor와 다르게 Filter에서 request 값 교체가 가능한 이유는 다음과 같다. // Filter @Component clas..
-
Transaction Propagation과 예외 전파Spring 2023. 2. 12. 18:04
이번 프로젝트를 진행하면서 try catch 예외처리 및 noRollbackFor 처리를 해준 부모 트랜잭션에서 계속해서 자식 트랜잭션의 예외 때문에 롤백되는 현상이 발생했는데,' 왜 롤백 하지 않도록 처리 했는데 예외가 발생했는가?'를 알아보면서 트랜잭션 전파와 예외에 대해서 공부하게 되었다. 알고보니 처리를 엉뚱한데에 해줘서 생긴 문제,,, 🤦🏻♀️ 트랜잭션 전파 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 트랜잭션 전파 종류 PROPAGATION_REQUIRED 진행중인 트랜잭션이 없으면 새로 시작하고 이미 시작된 부모 트랜잭션이 있으면 이에 참여 DefaultTransactionDefinition의 트랜잭션 ..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 3) CD 구현하기 ② (Sonarqube 설치 및 연동)Spring 2022. 9. 17. 09:14
이번엔 프로젝트를 배포할 때, Jenkins와 Sonarqube를 연동하여 코드에 문제가 없는지 확인한 후 배포가 진행되도록 할 것이다. Sonarqube 설치 배경 설정 먼저 sonarqube를 사용하기 위한 설정을 위해 다음과 같이 root사용자로 변환해준다. 기존 ubuntu 사용자로 진행시 permit denied가 된다. 자세한 내용은 다음에서 확인이 가능하다. https://docs.sonarqube.org/7.9/requirements/requirements/ Prerequisites and Overview | SonarQube Docs The only prerequisite for running SonarQube is to have Java (Oracle JRE 11 or OpenJDK 1..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 2) CD 구현하기 ① (Jenkins 배포)Spring 2022. 9. 17. 09:14
지난 시간에 CI를 구현하였다면 이번엔 코드 배포도 자동으로 이루어지도록 구현해보자. 배포 배경 설정 먼저 프로젝트 배포 배경설정을 위해서 JDK, Maven을 설정해줄 것이다. 터미널에서 maven을 설치하고 설치된 jdk와 maven 경로를 확인할 수 있도록 설정해주자. ## java 확인 $ which javac $ readlink -f /usr/bin/javac ## JAVA_HOME 경로 설정 $ vim ~/.bashrc export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) export PATH=$PATH:$JAVA_HOME/bin ## 설정파일 실행 $ source ~/.bashrc ## 경로 확인 $ echo $JAVA_HO..
-
[AWS + JENKINS + SONARQUBE] Spring 프로젝트 CI/CD 구현하기 1) CI 구현하기 (Jenkins 설치 및 실행, Github연동(ssh, webhook))Spring 2022. 9. 17. 09:14
CI/CD는 예전에 미션을 진행하면서 jenkins를 이용한 CI/CD 구현에 대해서 한번 찾아본 적이 있긴 하지만, 구체적으로 정리하면 좋을 것 같아 진행하게 되었다. ( 마침 면접용 spring 프로젝트가 생겼기 때문이기도 하다!😅 ) EC2에 자바 설치 가장 먼저 프로젝트를 배포할 ec2를 만들어 준다. 나의 경우 ubuntu 22.04 버전을 사용하고 퍼블릭 ip를 이용하여 접속이 가능하도록 설정해주었다. (ec2생성 파트는 지난 배포 블로그 글에서 자세히 다루었다) 먼저 ubuntu ec2에 접속하여 자바를 설치해준다. $ sudo apt update $ sudo apt install default-jre $ sudo apt install default-jdk ## 설치된 자바 버전 확인 $ j..
-
에러 페이지 반환하기 (Feat.ErrorController)Spring 2022. 8. 29. 16:25
과제제출형 면접을 진행하면서 예외처리는 모두 GlobalExceptionHandler(ControllerAdvice)에서 처리가 되도록 설정하였다. 그러나 웹상에서 잘못된 경로로 입력하여 들어갈 경우에는 가장 기본적인 예외인 whiteLabel 에러 페이지가 나타나고 이에 대해 왜 그런가 하는 질문을 받게 되었으나 답변을 제대로 하지 못하였다 😭. 이 질문의 의도는 ErrorController의 처리 방법에 대해서 묻는 질문으로 서블릿 컨테이너에서 등록된 서블릿에서 요청처리를 하다가 오류가 발생하였지만 해당 서블릿에서 처리하지 못하고 서블릿 컨테이너까지 오류가 전파되었을 때 서블릿 컨테이너가 오류(ServletException으로 래핑)를 처리하기 위해 특정 경로(server.error.path)로 해당..