简单介绍:
之前我们介绍过我们如何在Bean中获取配置文件的方式,就是通过将类注册到Spring容器中,然后通过@ConfigurationProperties()注解,这个注解有一个参数叫做prefix,参数的值就是我们在配置文件中配置的一组数据的对象的名字,然后就可以获取这一组对象的值装填到我们的对象中,那么这一节我们来看看如何做出更多的操作。
第三方Bean的绑定:
在之前我们是自己写了一个类,然后注册到容器中,但是如果我们要为一个不是自己写的类,而是由第三方提供的类,肯定不能打开源码去将其赋值或者去将其添加注解注册到Spring容器中,那么就需要使用注解的方式:
除了使用@Component将我们的类注册到容器中,还可以使用引入的方式将我们的类在使用的时候注册进容器中:
这是我们之前做过的一个案例,就是将配置文件中的配置项读取到类中,这个类中使用了@ConfigurationProperties注解引入配置信息,使用了@Component进行注册,如果我们去掉@Component注解,那么这个程序就会报错:
报错的原因很简单,就是因为它自动装填是在Spring容器中进行的,你现在要装填的类并不在我们的Spring容器中,所以就会报错,此时我们需要在引导类中另一个注解: 使用@EnableConfigurationProperties()注解,这个注解有一个值就是你自动注入的时候的类的class文件,那么他就会自动将这个类注册进容器中,然后这边就不会报错了:
这样做有什么好处呢,好处就是如果我们不引用这个配置文件,则Spring不会去管理它,就节省了我们的Spring的管理成本,当我们使用的时候,我们引入这个文件,Spring就会去管理他。如果使用@Component注解,则无论会不会用到,他都会被注册到容器中。
然后说回正题,如何给我们的第三方类去填充配置文件中的数据呢?首先我们先引入一个第三方类,就以druidDataSource为例:
这个DruidDataSource是第三方为我们提供的,所以它的参数肯定不是我们手动去填写的,并且它里面现在肯定是空的,我们可以获取以下里面的属性值先来看一下:
当程序运行之后,他会在控制台上输出DruidDataSoruce的url的值:
这个小小的null就表示我们的程序内部没有任何的数据,现在我们仅使用一个注解就能为其填充数据:
这个和之前我们为自己写的类添加数据的注解是一样的,一摸一样的,只不过它使用在了@Bean注解的下面,接下来我们来看运行结果,他就会输出我们在配置文件中编写的值:
这样我们就完成了给第三方的Bean填充配置文件中的值的过程,其实很简单,就是将之前我们给类赋值时候的注解写在@Bean注解的方法上,那么这一组数据就会赋值到方法的返回值类中。
松散绑定:@ConfigurationProperties在绑定属性的时候支持多种模式匹配
我们在配置文件中书写属性名的时候,无论写成任何的格式都可以绑定到类中:
这是之前的配置文件的数据,现在我们改一下它的属性名:
然后我们执行程序,看到依然可以输出结果出来:
这里只是演示一下,其实除了大写,你就算是小写带大写,大写带小写,大写带下划线,小写带下划线,一个字母隔一个下划线他都可以识别,这种对格式不是很固定的绑定方式就是松散绑定。