spring常用语法

etl表达式解析

if (rawValue != null && rawValue.startsWith("#{") && entryValue.endsWith("}")) {

// assume it's spel

StandardEvaluationContext context = new StandardEvaluationContext();

context.setBeanResolver(new BeanFactoryResolver(beanFactory));

Expression expression = parser.parseExpression(entryValue,

new TemplateParserContext());

value = expression.getValue(context);

}

属性绑定
复制代码
Bindable<T> bindable = Bindable.of(this.configurable.getConfigClass());T t =new Binder(propertySources, null, conversionService)
      .bindOrCreate(configurationPropertyName, bindable, handler);

ApplicationContext context = SpringApplication.run(Application.class, args);

Binder binder = Binder.get(context.getEnvironment());

绑定简单配置

FooProperties foo = binder.bind("com.didispace", Bindable.of(FooProperties.class)).get();

System.out.println(foo.getFoo());

绑定List配置

List<String> post = binder.bind("com.didispace.post", Bindable.listOf(String.class)).get();

System.out.println(post);

List<PostInfo> posts=binder.bind("com.didispace.posts",Bindable.listOf(PostInfo.class)).get();

System.out.println(posts);

// 读取配置 System.out.println(context.getEnvironment().containsProperty("com.didispace.database-platform"));

System.out.println(context.getEnvironment().containsProperty("com.didispace.databasePlatform"));

配置绑定到Map对象
复制代码
Map<String, DsConfig> dsMap = binder.bind("demo.dynamic", Bindable.mapOf(String.class, DsConfig.class)).get();
System.out.println("Map Config: " + dsMap);
配置转换处理
复制代码
String decPwd = binder.bind("demo.enc.pwd", Bindable.of(String.class))
        .map(s -> new String(Base64Utils.decodeFromString(s))).get();
System.out.println("解码之后的数据是: " + decPwd);
注册绑定过程回调

String dec = binder.bindOrCreate("demo.enc.pwd", Bindable.of(String.class), new BindHandler() {

@Override

public <T> Bindable<T> onStart(ConfigurationPropertyName name, Bindable<T> target, BindContext context) {

System.out.println("开始绑定: " + name);

return BindHandler.super.onStart(name, target, context);

}

@Override

public Object onSuccess(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result) {

System.out.println("绑定成功!" + name + " val:" + target.getValue() + " res: " + result);

return new String(Base64Utils.decodeFromString((String) result));

}

@Override

public Object onCreate(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result) {

System.out.println("创建: " + name + " val:" + target.getValue() + " res: " + result);

return BindHandler.super.onCreate(name, target, context, result);

}

@Override

public Object onFailure(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Exception error) throws Exception {

System.out.println("绑定失败! " + name + " " + error.getMessage());

return BindHandler.super.onFailure(name, target, context, error);

}

@Override

public void onFinish(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result) throws Exception {

System.out.println("绑定结束: " + name + " val:" + target.getValue() + " res: " + result);

BindHandler.super.onFinish(name, target, context, result);

}

});

System.out.println("绑定回调: " + dec);

相关推荐
我登哥MVP11 天前
走进 Gang of Four 设计模式:访问者模式
java·设计模式·访问者模式·原型模式
学究天人12 天前
数学公理体系大全:第五章 序数与基数理论:超限算术与集合的大小
人工智能·线性代数·算法·机器学习·数学建模·原型模式
学究天人12 天前
数学公理体系大全:第六章 选择公理的等价形式及证明
人工智能·线性代数·算法·机器学习·数学建模·概率论·原型模式
学究天人13 天前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(补充卷9)
人工智能·线性代数·算法·数学建模·动态规划·原型模式·抽象代数
geovindu14 天前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
Seven凹凸Man14 天前
WorkBuddy之产品经理原型设计及PRD实战
ai·原型模式
ttod_qzstudio15 天前
【软考设计模式】原型模式:“克隆“对象与深拷贝、浅拷贝精讲
设计模式·原型模式
希冀12319 天前
【JavaScript】Javascript—JS进阶—Day03
开发语言·javascript·原型模式
想吃火锅10051 个月前
【前端手撕】instanceof
前端·javascript·原型模式
UXbot1 个月前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app