带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)

简介: 带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)

带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)https://developer.aliyun.com/article/1339677?groupCode=taobaotech


在需要生成pipeline的接口上加上@AutoPipeline 只需为这个接口加上@AutoPipeline

@AutoPipeline
public interface ConfigSource {
String get(String key);
  }

3、实现pipeline的handler

 

public class MapConfigSourceHandler implements ConfigSourceHandler {
private final Map<String, String> map;
public MapConfigSourceHandler(Map<String, String> map) { this.map = map;
}
@Override
public String get(String key, ConfigSourceHandlerContext context) { String value = map.get(key);
if (StringUtils.isNotBlank(value)) { return value;
}
return context.get(key);
}
}
public class SystemConfigSourceHandler implements ConfigSourceHandler {



 

19

 

public static final SystemConfigSourceHandler INSTANCE = new SystemConfigSourceHandler();

20

 

 

21

 

@Override

22

 

public String get(String key, ConfigSourceHandlerContext context) {

23

 

String value = System.getProperty(key);

24

 

if (StringUtils.isNotBlank(value)) {

25

 

return value;

26

 

}

27

 

return context.get(key);

28

 

}

29

}

 


  1. 使用pipeline

 

Map<String, String> mapConfig = new HashMap<String, String>(); mapConfig.put("hello", "world");
ConfigSourceHandler mapConfigSourceHandler = new MapConfigSourceHandler(mapConfig);
ConfigSource pipeline = new ConfigSourcePipeline()
.addLast(mapConfigSourceHandler)
.addLast(SystemConfigSourceHandler.INSTANCE);
pipeline.get("hello");
// get value "world"
// from mapConfig / mapConfigSourceHandler
pipeline.get("java.specification.version")
// get value "1.8"
// from system properties / SystemConfigSourceHandler

 

带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(3)https://developer.aliyun.com/article/1339675?groupCode=taobaotech

相关文章
|
移动中间件 网络协议 容灾
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
108 0
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
|
设计模式 Java Maven
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)
127 0
|
存储 Java API
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
108 0
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
|
应用服务中间件 程序员 数据库
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
111 0
|
JSON Java 测试技术
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
115 0
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
|
IDE 前端开发 Java
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
|
Java Maven
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(6)