Spring PropertyMapper源码

本文探究了Spring中的PropertyMapper源码,从get()方法开始,详细阐述alwaysApplyingWhenNonNull()如何创建新的PropertyMapper,并解释了SourceOperator的作用。接着讨论from方法如何构建PropertyMapper.Source,以及as和to方法如何处理结果。最后提到了未经过as的source在调试时的表现。
摘要由CSDN通过智能技术生成

今天看到KafkaProperties.java中对参数的设置使用了PropertyMapper,很好奇.就来看一看PropertyMapper的源码.
备注: 大多数说明都写在了注释里.
KafkaProperties.java中的PropertyMapper

  • 首先通过PropertyMapper.get()方法获取PropertyMapper中的静态实例变量(两个构造参数都为null).
private static final PropertyMapper INSTANCE = new PropertyMapper((PropertyMapper)null, (PropertyMapper.SourceOperator)null);
public static PropertyMapper get() {
   
    return INSTANCE;
}
  • 然后使用alwaysApplyingWhenNonNull()方法创建一个新的PropertyMapper(以INSTANCE为parent,whenNonNull方法为SourceOperator),SourceOperator的作用是在from生成Source时追加处理返回的Source,后面会讲到.
public PropertyMapper alwaysApplyingWhenNonNull() {
   
    //把whenNonNull方法当成SourceOperator并作为参数调用alwaysApplying(SourceOperator operator)方法
    return alwaysApplying(this::whenNonNull);
}
// 对source执行whenNonNull()方法并返回,可用来当做SourceOperator接口作为上面方法的参数
private <T> Source<T> whenNonNull(Source<T> source) {
   
    return source.whenNonNull();
}

// 返回一个新的PropertyMapper实例,使用了给定 SourceOperator
public PropertyMapper alwaysApplying(SourceOperator operator) {
   
    Assert.notNull(operator, "Operator must not be null");
    return new PropertyMapper(this, operator);
}

public static final class Source<T> {
   
    private final Supplier<T> supplier;
    private final Predicate<T> predicate;

    private Source(Supplier<T><
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值