• springboot配置注入增强(四)使用框架实现自定义数据源和自定义属性解析


    1.代码

    框架代码已经上传到gitee中

    代码链接:https://gitee.com/summer-cat001/config-enhance

    jar包:https://gitee.com/summer-cat001/config-enhance/tree/master/build/libs

    2.使用方式

    2.1 引入jar包

    引入本地jar包或者把jar包上传到自己的maven仓库

    或者把代码下载下来改一改包名或加点自己的代码,然后通过build.gradle上传到自己的maven仓库中,只要修改账号密码和仓库地址,然后通过publish命令上传 ,脚本中根据version中是否以-SNAPSHOT结尾来判断上传到哪个仓库中

    2.2 自定义属性解析方法

    实现EnhancePropertyResolver接口,并添加到spring.factories中com.config.enhance.resolver.EnhancePropertyResolver中,多个用逗号分隔

    1. package com.config.enhance.test2.enhance;
    2. import com.config.enhance.resolver.EnhancePropertyResolver;
    3. public class EnhancePropertyResolverTest extends EnhancePropertyResolver {
    4. @Override
    5. public String resolveStringValue(String strVal) {
    6. if (strVal.contains("decode")) {
    7. strVal += "----自定属性解析";
    8. }
    9. return strVal;
    10. }
    11. }

    这样就可以了,下面看下运行结果

    2.3 自定义增加属性数据源

    自定义EnhancePropertySource接口,并添加到spring.factories中com.config.enhance.env.EnhancePropertySource中,多个用逗号分隔

    1. package com.config.enhance.test2.enhance;
    2. import com.config.enhance.env.EnhancePropertySource;
    3. import org.springframework.core.env.Environment;
    4. import org.springframework.core.env.MapPropertySource;
    5. import org.springframework.core.env.PropertySource;
    6. import java.util.HashMap;
    7. import java.util.Map;
    8. public class EnhancePropertySourceTest implements EnhancePropertySource<Map<String, Object>> {
    9. @Override
    10. public PropertySource<Map<String, Object>> buildPropertySource(Environment environment) {
    11. Map<String, Object> source = new HashMap<>();
    12. source.put("user.123.sex", "自定义数据源");
    13. return new MapPropertySource("enhanceTestSource", source);
    14. }
    15. }

    这样就可以了,下面看下运行结果

    当然自定义的数据源也会被自定义的解析方法进行解析如

    结果为

    3.原理

    本质上用了上一篇中介绍方式进行的开发,其中自定义解析用了上一篇中3.1+3.2组合的方式,先尝试进行3.1,如果不成功在用3.2兜底

    添加了自动配置com.config.enhance.autoconfigure.EnhanceAutoConfiguration,通过@Import将扩展点加入到springboot的启动流程中

  • 相关阅读:
    聊聊 RocketMQ 名字服务
    IDEA中application.properties文件中文乱码
    gcc 编译标准
    springboot 整合clickhouse
    配电能效管理系统在纺织厂能耗成本的研究
    OpenCV之cv::undistort
    Spring学习笔记2 Spring的入门程序
    LiveGBS流媒体平台GB/T28181常见问题-如何禁用删除已注册设备国标设备如何删除
    【笔试题】【day22】
    越来越流行的认证-FSC
  • 原文地址:https://blog.csdn.net/cjc000/article/details/134021209