@PropertySource & @ImportResource
@ConfigurationProperties默认从全局配置文件中读取
我们可以拆解出来分成单独的配置文件
【提取Bean配置,和SpringBoot配置解耦】
使用@PropertySource读取指定配置文件
要注意的是!如果你在application.yml中保留Bean配置
SpringBoot不会读取你指定的路径的配置文件
会读取这个yml全局配置的参数进行注入
【该@PropertySource只能读取properties文件,并且必须配合@ConfigurationProperties使用】
@ImportResource
导入Spring配置文件,让配置文件的内容生效
也就是说SpringBoot向下兼容原生Spring的xml配置
在需要运行的类中打上这个注解指定xml配置文件的位置即可被加载进SpringBoot
我们编写一个测试类交给原生xml配置
注册给xml配置
我们什么都不做,检查容器中是否存在这个Bean
结果不出意料,因为我们没有把这个xml配置加载到SpringBoot中
这个@ImportResource就是解决这个问题而存在
【再次测试发现还是false,因为这注解是打给SpringBoot主程序才会有效】
也就是说给测试类加载是不起效果的
在我们注解了主程序之后测试,返回true,
说明注解导入其他配置资源必须在主程序才会有效
第二点,该注解一样也可以加载多个配置资源
SpringBoot推荐使用类作为配置加载的容器
这就是Spring的注解配置,要注意的是,Spring的注解还是必须依靠XML的注解驱动开启,才能这么干
而SpringBoot完全注解开发,无xml就能这样注解使用
我们删除之前的xml配置,改用这个类配置
测试是否加载成功
这就是我们在Spring使用的JavaConfig注解实现配置