Spring Boot
[Spring Boot] ShedLock이란?
[Spring Boot] ShedLock이란?
2024.12.23들어가기 전이번 포스팅에서는 ShedLock에 대해서 다뤄볼 예정입니다. ShedLock은 스케줄러와 연관 있는 Lock입니다.스프링에서 제공하는 스케줄러가 무엇이며 속성에 대해서 자세히 모르시는 분은 아래 포스팅을 참고하고 이번 포스팅을 읽으시는 것을 추천드리겠습니다. https://hoestory.tistory.com/91 [Spring Boot] @Scheduled에 대하여들어가기 전이번 포스팅에서는 Spring에서 제공해 주는 @Scheduled에 대해서 알아보겠습니다. @Scheduled@Scheduled는 스프링 프레임워크에서 제공해 주는 기능입니다.특정 시간에 어떤 작업을 수행을hoestory.tistory.com ShedLock이란?만약 여러 개의 서버에서 동일한 스케줄링을 실행시키면 원..
[Spring Boot] @Scheduled에 대하여
[Spring Boot] @Scheduled에 대하여
2024.12.20들어가기 전이번 포스팅에서는 Spring에서 제공해 주는 @Scheduled에 대해서 알아보겠습니다. @Scheduled@Scheduled는 스프링 프레임워크에서 제공해 주는 기능입니다.특정 시간에 어떤 작업을 수행을 할 때 사용합니다.Scheduled에는 아래와 같은 옵션들이 존재합니다.cron : 작업 수행 할 시간설정zone : 수행할 시간의 타임존 설정fixedRate : 작업 시작 시간 기준으로 일정 간격마다 작업 설정fixedDelay : 이전 작업 종료 시간 기준으로 일정 간격 후에 작업을 실행하도록 설정 지금까지 @Scheduled의 속성에 대해 알아보았습니다. 이제 스케줄러를 실행시키기 위한 설정과 각각의 속성에 대해서 예제를 통해서 알아보겠습니다. 스케줄러 사용을 위한 설정 im..
[Spring Boot] 트랜잭션 전파과정에 대하여
[Spring Boot] 트랜잭션 전파과정에 대하여
2024.11.10들어가기 전이번 포스팅에서는 트랜잭션 전파과정에 대해서 알아보겠습니다.트랜잭션 격리 수준에 대해서 궁금하신 분은 아래 포스팅을 참고하시는 것을 추천드리겠습니다. https://hoestory.tistory.com/86 [MySQL] 트랜잭션 격리 수준들어가기 전 이번 포스팅에서는 데이터베이스 트랜잭션의 격리 수준에 대해서 알아보겠습니다. 트랜잭션 격리 수준트랜잭션 격리 수준은 여러 트랜잭션이 동시에 실행되는 상황에서 특정 트hoestory.tistory.com 트랜잭션 전파과정이란?트랜잭션 전파과정은 하나의 트랜잭션이 다른 트랜잭션과 상호작용 하는 것을 의미합니다. 설정에 따라 하나의 트랜잭션이 다른 트랜잭션에 합류하거나, 새로운 트랜잭션을 생성하는 등 다른 트랜잭션과 상호작용을 합니다. 트랜잭션 전..
[RabbitMQ] RabbitMQ 개념 및 Spring 연동
[RabbitMQ] RabbitMQ 개념 및 Spring 연동
2024.09.18들어가기 전이번 포스팅에서는 RabbitMQ에 대해서 알아보고 RabbitMQ와 Spring을 연동하는 방법에 대해서 알아보겠습니다. RabbitMQRabbitMQ는 클라우드 환경, 온프레미스에 쉽게 배포할 수 있는 안정적인 메시징 및 스토리밍 브로커입니다.메시지 큐*(Message Queue)를 통해 여러 애플리케이션에 데이터를 주고받을 수 있도록 해주기 위한 AMQP*의 구현체입니다. AMQP란?Advanced Message Queuing Protocol의 약자로 생산자(Producer)와 수신자(Consumer) 사이에서 메시지를 안전하게 교환하는 메시지 지향 미들웨어 개방형 프로토콜입니다.메시지 큐(Message Queue)란?프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신방법으로..
[Spring] Checked Exception, Unchecked Exception의 트랜잭션 처리 방식
[Spring] Checked Exception, Unchecked Exception의 트랜잭션 처리 방식
2024.06.26들어가기 전이번 포스팅에서는 체크드 익셉션(Checked Exception), 언체크드 익셉션(Unchecked Exception)에서의 트랜잭션을 어떻게 처리하는지에 대해 알아보겠습니다. 그리고 @Transactional의 속성인 noRollbackFor, rollbackFor 속성에 대해서도 알아보겠습니다. 체크드 익셉션(Checked Exception)RuntimeException을 제외한 Exception과 하위 예외를 모두 컴파일러가 체크하고 애플리케이션 로직에서 사용할 수 있는 최상위 예외입니다.try-catch 또는 throws를 이용하여 예외를 처리해야 합니다.그리고 체크드 익셉션 같은 경우는 언체크드 익셉션과 달리 예외가 발생하면 롤백이 되지 않고 커밋이 된다는 특성이 있습니다.커밋이 ..
[Spring] @DataJpaTest에서 Auditing 적용 안되는 현상
[Spring] @DataJpaTest에서 Auditing 적용 안되는 현상
2024.05.21들어가기 전이번 포스팅에서는 데이터 접근 계층 테스트 코드를 작성할 때 Auditing이 적용 안 되는 현상에 대해 알아보고 해결하는 방법에 대해 알아보겠습니다. 필자가 작성한 코드를 먼저 보고 오류 메시지를 확인해 보겠습니다. @EnableJpaAuditing@Configurationpublic class AuditingConfig {}@Getter@MappedSuperclass@EntityListeners(AuditingEntityListener.class)public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @CreatedDate @..
[Spring] 나태지옥에 빠지지 않기 위한 스케줄러
[Spring] 나태지옥에 빠지지 않기 위한 스케줄러
2024.04.07저는 주로 새롭게 학습한 내용이나 문제가 발생했을 때 해결했던 내용을 기반으로 블로그를 작성을 합니다. 이렇게 하면 나중에 복습하거나 문제가 발생했을 때 원인을 빠르게 파악할 수 있어서 최대한 많이 작성을 해놓으려고 노력하고 있습니다. 그런데 최근에 퇴사를 하고 하고 싶었던 공부를 하려고 하는데 사람의 마음이란.. 일을 안 하니깐 시간이 많다는 이유로 여유를 부리면서 집에서 누워있거나 핸드폰을 많이 하게 되더군요.. 회사를 다니면서도 "블로그를 열심히 작성을 해야지!"라는 마음을 가지고 있었지만.. 많이 피곤해서 작성을 못했었는데 지금은 시간이 아주 많고 잠도 많이 잘 수 있습니다. 그래서 이대로는 안 되겠다 싶어서 제가 사용할 수 있는 방법으로 나태해지는 제 자신을 방지하기 위해 방법을 생각했습니다. ..
[Spring Boot] Spring Boot + Kotlin + AWS S3를 이용한 이미지 다루는 방법
[Spring Boot] Spring Boot + Kotlin + AWS S3를 이용한 이미지 다루는 방법
2024.03.18들어가기 전 이번 포스팅에서는 Spring Boot와 Kotlin, AWS S3를 이용하여 이미지를 업로드, 조회, 삭제하는 방법에 대해 알아보겠습니다. AWS S3란? S3(Simple Storage Service)는 AWS에서 제공하는 클라우드 스토리지 서비스입니다. S3는 파일, 데이터 및 다양한 유형의 미디어 등 정적인 파일을 저장하고 관리하는 데 사용되는 웹 기반 스토리지 시스템입니다. 저장하는 데이터 양에 대한 비용도 저렴하고, 많은 양에 데이터를 저장할 수 있습니다. 그리고 하나의 버킷에 여러 객체를 저장할 수 있습니다. 버킷과 객체 버킷은 하나의 공간, 객체는 공간에 있는 사물이라고 이해하시면 됩니다. 버킷 안에는 여러 형태의 객체를 저장할 수 있고 수정, 삭제할 수 있습니다. 버킷의 이름..
[Spring Boot] Spring Security + Kotlin + JWT를 이용한 로그인
[Spring Boot] Spring Security + Kotlin + JWT를 이용한 로그인
2024.03.12들어가기 전 이번 포스팅에서는 스프링 시큐리티 + JWT + 코틀린을 사용하여 일반 로그인 구현하는 방법에 대해서 알아보겠습니다. 만약 스프링 시큐리티 + Oauth2.0 + JWT + 자바를 이용한 소셜 로그인 구현하는 방법에 대해서 궁금하신 분은 아래 포스팅을 참고하시는 것을 추천드립니다. https://hoestory.tistory.com/32 [OAuth] Spring Boot + React + OAuth2.0 이용한 네이버, 카카오 로그인 들어가기 전 토이 프로젝트를 진행하면서 OAuth를 이용한 소셜 로그인을 구현해보았습니다. 프론트는 React를 이용하였고 백엔드는 Spring Boot를 이용하였습니다. 네이버, 카카오 로그인에 대한 코 hoestory.tistory.com 설정 build...
[Spring Boot] @Transactional readOnly 속성에 따른 비즈니스 로직 분리
[Spring Boot] @Transactional readOnly 속성에 따른 비즈니스 로직 분리
2023.12.21필자는 처음에 @Transactional(readOnly = false)와 @Transactional(readOnly = true)를 기능에 맞게 메서드에 하나씩 붙여주면서 사용하거나 @Transactional(readOnly = false)만 클래스 단위에 붙여서 사용했습니다. 이와 같이 사용하다 보니 데이터 조회 기능과 삽입, 삭제, 수정 기능들이 비즈니스 로직에 복합적으로 구현되어 있어 가독성이 떨어지고 비효율적이라고 느꼈습니다. 비효율적으로 느낀 이유는 아래와 같습니다. 조회 기능에 대해서 오류 또는 기능 추가를 하게 될 때 조회 기능에 대한 로직만 읽으면 되는데 삽입, 삭제, 수정에 대한 로직들도 한 번씩 읽어 시간적 비용이 발생한다고 생각했습니다. 조회 기능과 삽입, 삭제, 수정 기능이 한 곳..
[Spring Boot] 스프링 Event에 대하여
[Spring Boot] 스프링 Event에 대하여
2023.12.01들어가기 전 프로젝트를 진행하다 보면 불필요한 객체를 의존하고 있는 코드들이 무수히 많습니다. 필자 또한 업무를 보다가 불필요한 의존성을 가지고 있는 것을 끊어주고 싶어서 EventListener에 대해 알아보고 적용을 해보았습니다. EventListener를 사용하는 이유는 강한 의존성을 끊기 위해 사용합니다. EventListener 사용하는 경우에 대해서 예를 들면 사용자가 회원가입을 하였을 때 회원에게 회원가입 축하 메시지를 보낼 때 사용합니다. 이유에 대해서는 EventListener와 TransactionalEventListener에 대해 알아보고 예제로 알아보겠습니다. Event 스프링에서 Event는 빈과 빈 사이에 데이터를 전달해 주는 방법 중 하나입니다. Event에는 이벤트를 발행하는..
[Spring Boot] 크롤링, 메일 전송 및 PDF 암호화
[Spring Boot] 크롤링, 메일 전송 및 PDF 암호화
2023.08.10들어가기 전 이번 포스팅에서는 Spring Boot + Java를 이용하여 크롤링을 하고 크롤링을 한 내용을 Pdf 파일로 만들어 메일에 담아서 보내는 방법에 대해 알아보겠습니다. 그리고 메일로 보낸 Pdf 파일을 암호화하는 방법에 대해서도 알아보겠습니다. 크롤링, 메일전송, Pdf 파일 생성 및 암호화하는 방법에 대해 알아보기 전에 해당 기능들을 구현하기 위해 사용되는 라이브러리에 대해 먼저 알아보겠습니다. 메일 전송에 사용되는 라이브러리 및 설정 JavaMailSender JavaMailSender는 스프링에서 메일을 손쉽게 보낼 수 있게 제공해 주는 라이브러리입니다. JavaMailSender를 사용하기 위해서는 의존성을 추가해 줘야 되고 application.yml 또는 properties에 설정..