spring属性绑定

 

Spring的属性绑定有很多种方式,比如:

  • @Value+spel表达式;
  • @ConfigurationProperties + spring-boot-configuration-processor依赖;
  • 动态注册BeanPostProcessor,在定义的配置bean装配期间依赖Binder完成属性的绑定;

每一种方式都有各自的优缺点,下面简单对比下。

  • @Value+spel表达式

这种方式使用灵活,针对个别属性的IOC很简单方便。但是在属性数量较多的情况下,每一个属性都需要配置表达式,用起来就比较麻烦了。同时,缺乏对数据的校验能力,没法在注入过程中对数据做类似jsr303校验。适合简单,数量较少的场合。

  • @ConfigurationProperties&动态注册BeanPostProcessor的方式

两者都会生成配置bean,将散列的属性聚合在一个声明的bean中进行收束,相比@Value有很大的进步。但是@ConfigurationProperties的方式要更灵活+编码量也会更少。不过其需要依赖springboot,对于spring环境的要求更高一点。动态注册的方式,仅依赖spring,相对依赖更能往下兼容一些。@ConfigurationProperties支持对注入内容做jsr303校验。

spring-boot-configuration-processor还可以针对配置属性动态生成spring-configuration-metadata.json文件,方便使用时的动态提示与属性关联。

原文地址:https://www.cnblogs.com/asfeixue/p/14188991.html