AttachmentCleanupJob.java
역할
- Soft delete된 첨부파일을 일정 기간(
retentionDays) 지나면 서버에서 삭제 + DB row 제거
- 주기적으로 실행되는 백그라운드 스케줄링 작업(Job)
- 파일 시스템과 DB를 동기화하여 불필요한 파일 제거
1. 필드
private final AttachmentRepository attachmentRepository; // DB 접근용
private final FileStorageService fileStorageService; // 파일 시스템 접근용
@Value("${app.attachment-cleanup.enabled:true}")
private boolean enabled; // 청소 기능 활성 여부
@Value("${app.attachment-cleanup.retention-days:1}")
private int retentionDays; // soft delete 후 보관 일수
- attachmentRepository → DB 조회 및 삭제용
- fileStorageService → 실제 파일 경로 변환 및 삭제용
- enabled → 청소 기능 ON/OFF
- retentionDays → soft delete 후 몇 일 뒤 삭제할지 설정
2. 메서드
@Scheduled(fixedDelay = 600000) // 10분마다 실행
@Transactional
public void cleanupDeletedAttachments() { ... }
- @Scheduled → 주기적 실행 (예: 10분마다)
- @Transactional → DB 삭제 작업 시 트랜잭션 적용
- cleanupDeletedAttachments()
- 기능 비활성화 시 종료
- retentionDays 이전 soft delete 파일 조회
- 실제 파일 삭제 → 존재하지 않으면 무시
- DB row 물리 삭제(hard delete)
3. 특징