본문 바로가기

728x90

Spring Boot

(53)
[Spring Boot] Scheduler 간단한 설명스프링 프레임워크에서 제공하는 작업 스케줄링 기능으로 특정 작업을 일정 주기마다 자동으로 실행하도록 설정할 수 있습니다.주로 배치 작업, 알림, 정기적인 데이터 처리 등에 사용됩니다.저는 지금 캡스톤 프로젝트에서 계정 삭제일로부터 1달이 지난 계정을 삭제할 로직, 통계 데이터, 유저 예약 알림 등을 사용하기 위해 정리했습니다. 주요 어노테이션@EnableScheduling스케줄링 기능을 활성화 할 때 사용됩니다(주로 설정 클래스에서 사용) @Scheduled메서드에 적용하며 스케줄을 설정합니다. 사용 예제스케줄러 설정하기@Configuration@EnableSchedulingpublic class SchedulerConfig { @Bean public TaskScheduler ta..
[Spring Boot] 파일 저장 시스템 파일 저장 시스템을 구현하기 전에 고려해야할 점1. 파일 이름 중복원본 파일 이름을 그대로 저장을 하게 된다면 파일 이름이 중복될 가능성이 존재합니다.이러한 문제점을 해결하기 위해서는 별도의 새이름을 만들어 저장해야합니다.이번 글에서 이 문제점을 UUID + _ + 원본 이름으로 유니크한 이름으로 저장하겠습니다. 2. 한 폴더에 저장할 수 있는 최대 파일 수운영체제마다 다르지만 한 폴더에 저장할 수 있는 최대 파일 수의 한계가 있습니다.해시 기반 : 파일 이름이나 ID를 해시화하여 폴더를 나누는 방법입니다.날짜 기반 : 파일 업로드 날짜를 기준으로 폴더를 나누는 방법입니다.UUID 기반 파일 이름 + 폴더화 : 파일 이름을 UUID로 변경하고, 그 일부를 폴더로 사용합니다이번 글에서는 날짜 기반 파일 분..
[Spring Boot] Optional Optional이란?Optional은 null일 수 있는 객체를 감싸는 Wrapper 클래스입니다.주로 값이 존재할 수도, 존재하지 않을 수도 있는 상황에서 null을 직접 다루지 않고 안전하게 처리하기 위해 사용됩니다. 왜 사용할까?개발자들이 가장 싫어하는 오류 중 하나가 바로 NullPointerException(NPE)입니다.예를 들어, Repository에서 findById() 메서드를 통해 데이터를 조회할 때, 해당 ID에 해당하는 값이 없으면 null이 반환됩니다.이런 경우, 아무런 체크 없이 null 객체에 바로 접근하면 NPE가 발생하게 됩니다.Optional은 이런 상황을 방지하기 위해 사용되며, 값을 감싸는 형태로 존재 여부를 명시적으로 처리할 수 있게 도와줍니다. 주요 메서드메소드..
[Spring boot] 프록시 객체(Proxy Object) 프록시 객체란?원본 객체를 감싸는 객체로 실제 객체를 대신하여 요청을 처리하는 객체입니다.메소드 호출을 가로채 추가적인 기능(로깅, 트랜잭션, 보안 등)을 수행할 수 있도록 합니다.  프록시 객체의 주요 특징AOP 적용 시 프록시 객체 사용AOP는 메소드 실행 전후에 부가 기능을 삽입하기 위해 프록시 객체를 활용합니다.@Transactional을 적용하면 대상 객체 대신 트랜잭션을 관리하는 프록시 객체를 생성동적 프록시 방식런타임에 동적으로 프록시 객체 생성트랜잭션 관리와 관련@Transactional을 사용할 경우 해당 객체의 메소드를 실행할 때 프록시를 통해 트랜잭션을 시작하고 정상적으로 종료되면 커밋을 하고 예외가 발생할 때는 롤백을 합니다. 프록시 객체 종류JDK 프록시 객체인터페이스를 구현한 객..
[Spring Boot] 상속관계 매핑 전략 개발을 진행하던 중 스, 드, 메 테이블을 작성하였고 밑의 그림처럼 테이블을 작성하였습니다.스드메의 공통 속성들을 상품 테이블로 묶고 1대1 관계로 연관관계를 설정하였으며 개발에 들어가니 너무 귀찮은 작업을 하기 시작했습니다. 처음 개발을 진행했을 때 드레스 1개 상품을 등록을 할 때 상품 테이블에 데이터 1개 드레스 테이블에 데이터 1개를 저장하고 있었습니다. 하지만 문뜩 드는 생각은 이렇게 번거롭고 귀찮은 작업을 무수히 많은 사람들이 했을텐데 간편하게 만든게 있지 않을까? 라는 생각을 찾아보았습니다.  상속 관계 매핑에 대해서 검색을 하니 바로 검색으로 나왔었습니다.https://victorydntmd.tistory.com/209 [Spring JPA] 상속 ( JOINED 전략을 중심으로 )객체지향..
[Spring Boot] @PrePersist 어노테이션 @PrePersist란?JPA의 라이프사이클 이벤트 어노테이션 중 하나로, 엔티티가 영속화(저장)되기 전에 실행할 로직을 정의할 때 사용EntityManager.persist() 혹은 save() 중 하나라도 호출이 될 때 데이터베이스에 INSERT 되기 직전 실행되는 메소드  예제 : 유저 가입일 자동 값 입력UserEntityimport jakarta.persistence.*;import lombok.*;import java.time.LocalDateTime;@Getter@Entity@Table(name = "user")@AllArgsConstructor@NoArgsConstructor@Builder@ToStringpublic class UserEntity { @Id @GeneratedVa..
[Spring Boot] HTTP Body 암호화 및 간단한 예제 민감한 데이터 전송 시 보안 방법1. 전송 시 사용하는 보안 방식TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer) 프로토콜은 인터넷을 통한 데이터 전송에서 암호화를 제공합니다.민감한 데이터를 전송할 때, 클라이언트와 서버 간의 연결을 암호화하여 중간에서 데이터가 탈취되는 것을 방지합니다.TLS는 HTTP over SSL(HTTPS)로 구현되어 웹 브라우저와 서버 간의 통신을 안전하게 암호화합니다.이 방식은 데이터 전송 중 보안을 보장하며, 연결이 안전하게 유지되도록 합니다.추가 설명:HTTPS는 HTTP 프로토콜 위에 TLS/SSL을 적용하여 데이터의 기밀성을 보장합니다. 이로 인해 중간자 공격(MITM)이나 데이터 스니핑을 방지할 수 있습니다.  ..
[Spring Boot] 로그 파일 생성하기 1. 사전 지식@Slf4j@Slf4j는 SLF4J(Simple Logging Facade for Java)의 추상화를 사용하며, 디폴트로 Logback이 구현체로 설정됩니다.Logback은 Spring Boot에서 기본 제공되는 로깅 프레임워크로, XML 또는 Groovy 파일을 통해 유연한 설정을 제공합니다.  2. Logback 설정 가이드Logback 설정 파일 생성위치: src/main/resources/logback.xml기본 구성 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 구성 요소 설명로그 메시지를 출력하는 대상 설정.여기서 STDOUT은 콘솔에 로그를 출력하기 위한 App..

728x90