扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
小编给大家分享一下Spring Boot如何配置导入,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联是一家专注于网站建设、成都网站设计与策划设计,铁岭网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:铁岭等地区。铁岭做网站价格咨询:18982081108
我们知道在 Spring Boot 中可以用一个 @Configuration
配置文件来配置所有 Bean 及其他配置,但其实没必要这么做。
我们可以把相关的配置独立出来,放到多个 @Configuration
中,如以下参考:
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(); }
可以导入这三类注册文件:
Configuration
ImportSelector
ImportBeanDefinitionRegistrar
第一个已经讲过了,其他两个后面会讲,关注Java技术栈微信公众号,获取第一时间推送。
先来看一个 @Import
示例,直接导入其他配置文件:
@Configuration @Import({ RedisConfiguration.class }) public class MainConfiguration { // ... }
当然,如果这些配置文件都在类扫描路径下,不用 @Import
导入注解,直接用 @ComponentScan
也能搞定,这个默认的 @SpringBootApplication
注解就包含了,不需要再重复加。
再者,@Enable*
注解也能派上用场:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(RedisConfiguration.class) public @interface EnableRedis { }
具体可以参考这篇文章:Spring Enable*高级应用及原理,另外,关注Java技术栈微信公众号,在后台回复:spring,可以获取更多 Spring 干货。
那么问题来了,老项目想用 Spring Boot 框架,但还有大量的 XML 配置文件,很难迁移到 @Configuration
配置文件里面来,怎么处理?
栈长继续给你支招!
答案就是:@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如何配置导入”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流