本站AI自動判斷提供您所需要的app下載:點我下載安裝,你懂的APP
作者|fanfan
來源|極果編輯部
龍城傳奇手游怎么玩厲害 -
櫻花動漫
public class HandleChainManager {
/**
* 存放責任鏈路上的具體處理類
* k-具體業務場景名稱
* v-具體業務場景下的責任鏈路集合
*/
private Map> handleMap;
/**
* 存放系統中責任鏈具體處理類
* @param handlerList
*/
public void setHandleMap(List handlerList) {
handleMap = handlerList
.stream()
.sorted(Comparator.comparingInt(h -> AnnotationUtils.findAnnotation(h.getClass(), Duty.class).order()))
.collect(Collectors.groupingBy(handler -> AnnotationUtils.findAnnotation(handler.getClass(), Duty.class).type()));
}
/**
* 執行具體業務場景中的責任鏈集合
* @param type 對應@Duty注解中的type,可以定義為具體業務場景
* @param t 被執行的參數
*/
public R executeHandle(String type, T t) {
List handlers = handleMap.get(type);
R r = null;
if (CollectionUtil.isNotEmpty(handlers)) {
for (IHandler handler : handlers) {
r = handler.handle(t);
}
}
return r;
}
}
# run the authserver located in the directory "docker/authserver/bin" of the host machine
小米天刀手游怎么玩 -
櫻花動漫
將我們得到的用戶名和密碼填入下圖Visual Studio程序打開的acore位置
藍月傳奇2游戲攻略 -
櫻花動漫
source: ./docker/authserver/bin
# set noninteractive mode so tzdata doesn't ask to set timezone on install
private static class VirtualFilterChain implements FilterChain {
private final FilterChain originalChain; //鏈條中的節點全部執行完后,處理request請求的對象
private final List additionalFilters; //請求實際執行者,
private final FirewalledRequest firewalledRequest;
private final int size;
private int currentPosition = 0; //鏈條移動的位置,當currentPosition==size,到達鏈條的尾端。
private VirtualFilterChain(FirewalledRequest firewalledRequest,
FilterChain chain, List additionalFilters) {
this.originalChain = chain;
this.additionalFilters = additionalFilters;
this.size = additionalFilters.size();
this.firewalledRequest = firewalledRequest;
}
public void doFilter(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (currentPosition == size) { //到達鏈條尾端
if (logger.isDebugEnabled()) {
logger.debug(UrlUtils.buildRequestUrl(firewalledRequest)
+ " reached end of additional filter chain; proceeding with original chain");
}
// Deactivate path stripping as we exit the security filter chain
this.firewalledRequest.reset();
originalChain.doFilter(request, response);
}
else {
currentPosition++; //依次移動鏈條指針到具體節點
Filter nextFilter = additionalFilters.get(currentPosition - 1);
if (logger.isDebugEnabled()) {
logger.debug(UrlUtils.buildRequestUrl(firewalledRequest)
+ " at position " + currentPosition + " of " + size
+ " in additional filter chain; firing Filter: '"
+ nextFilter.getClass().getSimpleName() + "'");
}
nextFilter.doFilter(request, response, this);//將鏈條本身的對象傳遞給鏈條成員
}
}
}