同时使用@postconstruct和@Scheduled注释

时间:2016-12-01 11:11:32

标签: java spring

我是新学员并使用spring注释进行配置我可以使用@PostConstruct和@Scheduled(fixedRate = 60L * 1000L) 在下面给出的相同方法?如果是,应该是什么样的注释?

@Component
public class Cache {

     @PostConstruct
     @Scheduled(fixedRate = 60L * 1000L)
     public void refreshCache() {
     ...
     }

}

2 个答案:

答案 0 :(得分:4)

是的,你班上的注释是正确的。但你最好使用:

@Scheduled(fixedRate = 60L * 1000L, initialDelay=0)
public void refreshCache() {

没有@PostConstruct因为:

  1. 只能使用@PostConstruct注释班级中的一个方法。
  2. 您不能使用@PostConstruct
  3. 从方法中抛出已检查的异常
  4. 其他人不会自动装配此组件。
  5. 原因还有很多,但我就此止步。

答案 1 :(得分:0)

如果你不使用任何xml,这个例子应该是你想要的,它实际上是一个Spring启动应用程序。 https://github.com/soiff-spring/spring-boot-example

我的完整示例在这里:https://github.com/soiff-spring/spring-mvc-example

请注意以下文件和课程:

  1. hello-servlet.xml
  2. HelloScheduler
  3. 打包这个项目并将它放在你的tomcat容器中并启动你的tomcat,你会看到如下日志:

    20:06:53.003 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594013001 : hello world ...
    20:06:54.001 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594014001 : hello world ...
    20:06:55.001 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594015001 : hello world ...
    20:06:56.002 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594016002 : hello world ...
    20:06:57.000 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594017000 : hello world ...
    20:06:58.002 [pool-1-thread-1] INFO xyz.cloorc.example.springmvc.HelloScheduler - 1480594018002 : hello world ...
    

    享受自己。