스프링
스케줄링, 배치로 S3 이미지 삭제 처리
개요 현재 제가 진행하고 있는 프로젝트에서는 이미지 삭제를 hard delete 로 처리하고 있습니다. 주문글, 댓글 등 다른 엔티티들은 모두 soft delete로 처리하는데 이미지만 hard delete 를 하고 있는 이유가 무엇일까요? 우선 soft delete를 사용하는 이유는 삭제된 데이터를 복구해야 할 일이 생길 수도 있고, 데이터 자체를 활용하여 추후 기능 개발에 활용할 수도 있기 때문입니다. 즉, 데이터가 서비스의 자산이기 때문입니다. 현재 제 프로젝트에서는 이미지를 독립적인 엔티티로 관리하고 있는데, 이미지를 soft delete 를 해야하는 이유가 크게 없습니다. S3와 같은 스토리지에서는 삭제를 하고 DB 에서는 soft delete 된 상태로 놓아 두는 것은 의미가 없고, S3 에서..
빈 스코프에 따른 생명 주기
singleton 디폴트 스코프로 컨테이너의 시작부터 끝까지 함께하는 빈이다. 컨테이너 생성-빈 생성-의존관계 주입-초기화 후 콜백-사용-소멸 전 콜백-종료 의 생명주기를 가진다. prototype 요청 시마다 새로운 빈을 생성하여 클라이언트에 반환한다. 스프링 컨테이너에서 빈 생성 후 의존관계 주입까지만 관리하고 그 이후 관리의 책임은 클라이언트가 갖는다. 컨테이너 생성-빈 생성-의존관계 주입-초기화 후 콜백까지만 스프링이 관리함. request http 요청마다 생성되어 http 요청과 같은 생명주기를 가짐 request 빈은 실제 http 요청이 올때까지는 존재하지 않는 빈이다. 스프링 컨테이너 생성 시점에는 request 빈이 존재하지 않기에 DI를 해주면 오류가 발생한다. 스프링에서는 Provi..