2015-02-28 7 views
6

Как включить запланированные задания только в определенных профилях?Как включить задания @Scheduled по профилю весной?

псевдокод:

@Scheduled(cron = "${job.cron}") 
@Profile("prod") 
public void runJob() { 

} 

Возможно ли это?

+1

Если вы не хотите ли запланированные задания просто сделать отдельный конфиг для '@ EnableScheduling' аннотации, которая привязана к определенному профилю. Если это не разрешено, аннотации '@ Scheduled' игнорируются. –

+0

Спасибо, это отличная идея, поэтому включите планирование по ядру профиля. Тем не менее это полезно только в том случае, если я не хочу иметь никаких заданий в тесте. В основном я просто хочу исключить конкретные. – membersound

+0

Если вы не хотите, чтобы задания аннотировали bean-компонент с помощью '@ Profile' insted метода. –

ответ

4

Вы должны иметь один компонент за профиль:

@Component 
@Profile("prod") 
public class ProdJob { 

    @Scheduled(cron = "${job.cron}") 
    public void runJob() { 

    } 

} 

@Component 
@Profile("beta") 
public class BetaJob { 

    @Scheduled(cron = "${job.cron}") 
    public void runJob() { 

    } 
} 
Смежные вопросы