@Scheduled(
            cron = "${cas.ticket.registry.cleaner.schedule.cron-expression:}",
            zone = "${cas.ticket.registry.cleaner.schedule.cron-time-zone:}",
            initialDelayString = "${cas.ticket.registry.cleaner.schedule.start-delay:PT30S}",
            fixedDelayString = "${cas.ticket.registry.cleaner.schedule.repeat-interval:PT120S}")
        @Override
        public void run() {
            FunctionUtils.doAndHandle(__ -> ticketRegistryCleaner.clean());
        }
The Ticket registry cleaner scheduler. Because the cleaner itself is marked
with {@link Transactional},
we need to create a separate scheduler component that invokes it
so that {@link Scheduled} annotations can be processed and not interfere
with transaction semantics of the cleaner.
core/cas-server-core-tickets/src/main/java/org/apereo/cas/config/CasCoreTicketsSchedulingConfiguration.java