스프링 스케줄러 활성화
@EnableScheduling
@SpringBootApplication
public class InstagramApplication {
public static void main(String[] args) {
SpringApplication.run(InstagramApplication.class, args);
}
}
스케줄러 생성 & 동작
<aside> 📝 매일 밤 12시에 스케줄러를 실행하여 각 사용자의 동의 일이 1년이 넘었으면 해당 사용자의 privacy_policy_status 칼럼을 ‘DISAGREE’로 변경
</aside>
@Slf4j
@Component
@RequiredArgsConstructor
public class Scheduler {
private final UserDao userDao;
//매일 자정 실행되는 스케줄러
@Scheduled(cron = "0 0 0 * * *") //초,분,시,일,월, 요일(생략가능)
public void checkPrivacyPolicy() {
log.info("매일 자정 실행됨");
userDao.modifyPrivacyPolicyStatus();
}
}
public interface UserDao extends JpaRepository<User, Long> {
/* 개인정보 처리방침 동의 상태 1년마다 갱신 (스케줄러) */
**** @Modifying
@Transactional
@Query(value="update user u set u.privacy_policy_status='DISAGREE' where (date_add(u.created_at, interval +1 year) < now())", nativeQuery = true)
void modifyPrivacyPolicyStatus();
}