2016-02-03 58 views
2

我创建了一个Spring Boot应用程序。我配置了包含调度器方法startService()的类。 下面是我的代码:Scheduler没有在Spring Boot中运行

服务类:

package com.mk.service; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.scheduling.annotation.Scheduled; 
import org.springframework.stereotype.Component; 

import com.mk.envers.model.BossExtChange; 
import com.mk.envers.model.BossExtChangeRepository; 

@Component 
public class EnverseDemoService { 

    @Autowired 
    BossExtChangeRepository bossExtChangeRepository; 

    @Scheduled(fixedRate = 30000) 
    public void startService() { 
     System.out.println("Calling startService()"); 
     BossExtChange bossExtChange = bossExtChangeRepository.findById(5256868L); 
     System.out.println("bossExtChange.getDescription()--->"+bossExtChange.getDescription()); 
     System.out.println("Ending startService()"); 
    } 
} 

主类:

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.scheduling.annotation.EnableScheduling; 

@SpringBootApplication 
@EnableScheduling 
@PropertySource("classpath:application.properties") 
public class EnverseDemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(EnverseDemoApplication.class, args); 
    } 
} 

我已经注解,将作为运行类作为@Component也是方法@Scheduled(fixedRate = 30000)一个调度程序。但是,当以Spring Boot运行应用程序时,调度程序不会触发。控制台显示以下消息:

2016-02-03 10:56:47.708 INFO 10136 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2016-02-03 10:56:47.721 INFO 10136 --- [   main] com.mk.envers.EnverseDemoApplication  : Started EnverseDemoApplication in 3.231 seconds (JVM running for 3.623) 
2016-02-03 10:56:47.721 INFO 10136 --- [  Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]49e202ad: startup date [Wed Feb 03 10:56:44 IST 2016]; root of context hierarchy 
2016-02-03 10:56:47.721 INFO 10136 --- [  Thread-2] o.s.j.e.a.AnnotationMBeanExporter  : Unregistering JMX-exposed beans on shutdown 
2016-02-03 10:56:47.736 INFO 10136 --- [  Thread-2] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 

任何人都可以请帮助我。

+0

删除'@ PropertySource'作为一个已经被默认加载解决这个问题。 'EnverseDemoApplication'是否在'EnverseDemoService'的相同或超级包中? (你省略了'package'子句,所以很难说。)。如果它不是你的bean没有拿起,并且没有调度/线程将活着。 –

回答

6

我终于能够解决上述问题了,我将我的服务类EnverseDemoService的包从package com.mk.service;更改为com.mk.envers.service;。这是因为如果包com.mk.envers中存在主配置类EnverseDemoApplication。引导应用程序中的所有其他类都应该位于合格包中。 Eg: com.mk.envers.*;

8

可能是你可以在配置文件中添加@ComponentScan注释

@SpringBootApplication 
@EnableScheduling 
@ComponentScan(basePackages = "com.mk.service") 
@PropertySource("classpath:application.properties") 
public class EnverseDemoApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(EnverseDemoApplication.class, args); 
    } 
} 
相关问题