Spring Boot 之配置導入,強大到不行!

咱們知道在 Spring Boot 中能夠用一個 @Configuration 配置文件來配置全部 Bean 及其餘配置(不會的看這篇文章:Spring零配置之@Configuration註解詳解),但其實不必這麼作。spring

咱們能夠把相關的配置獨立出來,放到多個 @Configuration 中,如如下參考:spring-mvc

  • MainConfiguration:項目主要配置
  • DataSoureceConfiguration:數據源配置
  • RedisConfiguration:Redis配置
  • MongoDBConfiguration:MongoDB配置

這時候 @Import 註解就能派上用場了,來看下它的源碼:微信

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {

    /**
     * {@link Configuration}, {@link ImportSelector}, {@link ImportBeanDefinitionRegistrar}
     * or regular component classes to import.
     */
    Class<?>[] value();

}

能夠導入這三類註冊文件:mvc

  • Configuration
  • ImportSelector
  • ImportBeanDefinitionRegistrar

第一個已經講過了,其餘兩個後面會講,關注Java技術棧微信公衆號,獲取第一時間推送。框架

先來看一個 @Import 示例,直接導入其餘配置文件:spa

@Configuration
@Import({ RedisConfiguration.class })
public class MainConfiguration {
    // ...
}

固然,若是這些配置文件都在類掃描路徑下,不用 @Import 導入註解,直接用 @ComponentScan 也能搞定,這個默認的 @SpringBootApplication 註解就包含了,不須要再重複加。code

再者,@Enable* 註解也能派上用場:component

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(RedisConfiguration.class)
public @interface EnableRedis {
}

具體能夠參考這篇文章:Spring Enable*高級應用及原理,另外,關注Java技術棧微信公衆號,在後臺回覆:spring,能夠獲取更多 Spring 乾貨。xml

那麼問題來了,老項目想用 Spring Boot 框架,但還有大量的 XML 配置文件,很難遷移到 @Configuration 配置文件裏面來,怎麼處理?rem

棧長繼續給你支招!

答案就是:@ImportResource 註解,來看下它的源碼:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface ImportResource {

    @AliasFor("locations")
    String[] value() default {};

    @AliasFor("value")
    String[] locations() default {};

    Class<? extends BeanDefinitionReader> reader() default BeanDefinitionReader.class;

}

@ImportResource 能夠指定要導入的 XML 配置文件的路徑,還能指定自定義的 BeanDefinitionReader

來一個示例,導入一個類路徑下的 XML 配置文件:

@Configuration
@ImportResource("classpath:config/spring-mvc.xml")
public class MainConfiguration {
    // ...
}

獲取全部 Spring Boot 示例代碼,請關注微信公衆號 "Java技術棧" 在後臺回覆關鍵字:bootcode

經過本文的介紹,能夠看出來 Spring Boot 如今對原有的 Spring MVC 傳統項目是支持的很是好的,無論是 Servlet,仍是 XML 配置文件,均可以輕鬆集成。

上面說的這些註解在《Spring Boot 最核心的 25 個註解》文章中都有說明,後面會逐步分解開來,關注Java技術棧微信公衆號,獲取第一時間推送。

相關文章
相關標籤/搜索