­

spring之order註解

  • 2019 年 11 月 26 日
  • 筆記

我們今天要分享的是spring框架提供的@Order註解的使用,估計這篇文章的閱讀時間應該在二到三分鐘之間就結束了。

好了,其實這個註解還是蠻常用的,可以控制加載的順序,僅此而已。下面我們還是按照往日的風格進行寫吧,我們先看下我們的示例程序。

package com.wpw.dockerspringboot;    public class Student {  }  
package com.wpw.dockerspringboot;    public class Student2 {  }  

上面就是簡單的定義兩個java類,什麼都不做,為下面需要寫的配置類做下鋪墊而已。

package com.wpw.dockerspringboot;    import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;  import org.springframework.core.annotation.Order;    @Order(value=1)//這裡指定order的值為1  @Configuration  public class Configuration1 {      @Bean      public Student getStudent(){          System.out.println("configuration1被加載");          return new Student();      }  }  

上面我們定義了一個配置類,裏面可以獲取Student類的示例,順便打印出了一句表示加載順序的。

package com.wpw.dockerspringboot;    import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;  import org.springframework.core.annotation.Order;    @Order(value=2)//這裡設置order的值為2  @Configuration  public class Configuration2 {      @Bean      public Student2 getStudent2(){          System.out.println("configuration2被加載了");          return new Student2();      }  }  

上面同樣定義了一個配置類,主要是為了獲取Student2類的實例,順便打印了一下加載的順序。

ok,到這裡我們只需要啟動下面的主程序。

package com.wpw.dockerspringboot;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;    @SpringBootApplication  public class DockerSpringbootApplication {        public static void main(String[] args) {          SpringApplication.run(DockerSpringbootApplication.class, args);      }    }  

我們看下控制台的輸出語句就應該學會了spring提供的order註解的使用了。

2019-11-10 18:33:53.033  INFO 3136 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1383 ms  configuration1被加載  configuration2被加載了  2019-11-10 18:33:53.211  INFO 3136 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'