咱們知道在 Spring Boot 中能夠用一個 @Configuration
配置文件來配置全部 Bean 及其餘配置(不會的看這篇文章:Spring零配置之@Configuration註解詳解),但其實不必這麼作。spring
咱們能夠把相關的配置獨立出來,放到多個 @Configuration
中,如如下參考:spring-mvc
這時候 @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
第一個已經講過了,其餘兩個後面會講,關注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技術棧微信公衆號,獲取第一時間推送。