之前寫了一篇resttemplate使用例項,由於spring 5全面引入reactive,同時也有了resttemplate的reactive版webclient,本文就來對應展示下webclient的基本使用。
@test
public void testwithcookie
()",resp.block());
}複製**
@test
public void testwithbasicauth
()",resp.block());
}複製**
@test
public void testwithheaderfilter
() {}", clientrequest.method(), clientrequest.url());
clientrequest.headers()
.foreach((name, values) -> values.foreach(value -> logger.info("{}={}", name, value)));
return next.exchange(clientrequest);
}).build();
monoresp = webclient.get()
.uri("")
.retrieve()
.bodytomono(string.class);
logger.info("result:{}",resp.block());
}複製**
@test
public void testurlplaceholder
()&other=","北京天氣","test") //使用佔位符
.retrieve()
.bodytomono(string.class);
logger.info("result:{}",resp.block());
}複製**
@test
public void testurlbiulder
()",resp.block());
}複製**
@test
public void testformparam
()",resp.block());
}複製**
static class book
public void setname(string name)
public string gettitle
() public void settitle(string title)
}@test
public void testpostjson
()",resp.block());
}複製**
@test
public void testpostrawjson
()"))
.retrieve().bodytomono(string.class);
logger.info("result:{}",resp.block());
}複製**
@test
public void testuploadfile
()",resp.block());
}複製**
@test
public void testdownloadimage() throws ioexception
複製**
@test
public void testdownloadfile() throws ioexception
複製**
@test
public void testretrieve4xx
()&direction=",
"updated", "desc")
.retrieve();
monomono = responsespec
.onstatus(e -> e.is4xxclienterror(),resp -> ,msg:{}",resp.statuscode().value(),resp.statuscode().getreasonphrase());
return mono.error(new runtimeexception(resp.statuscode().value() + " : " + resp.statuscode().getreasonphrase()));
}).bodytomono(string.class)
.doonerror(webclientresponseexception.class, err -> ,msg:{}",err.getrawstatuscode(),err.getresponsebodyasstring());
throw new runtimeexception(err.getmessage());
}).onerrorreturn("fallback");
string result = mono.block();
logger.info("result:{}",result);
}複製**
webclient是新一代的async rest template,api也相對簡潔,而且是reactive的,非常值得使用。 spring學習筆記5
場景 想通過magicboss.getcar方法每次都得到乙個新的car例項。car是prototype,但magicboss是singleton。可以採用lookup方法注入。依賴於cglib。cglib可以在執行期動態操作位元組碼,為bean動態建立子類或實現類。public inte ce m...
Spring學習筆記 (5)
spring 1.需要注入的屬性寫到配置檔案中 如果屬性為基礎型別,需要有setter 方法,必須也寫在包的類 中,因為需要setter 方法 如果屬性為類,需要有無參構造方法,可不寫在包的類 中 2.spring config.xml的告知 在程式入口告知 對於測試入口 contextconfig...
Spring5原始碼分析之Spring
因為本人打算仿照spring寫個小型spring tinyspring,所以要閱讀spring原始碼,在閱讀原始碼過程中的發現就記錄於此,如果有什麼錯誤,歡迎指出,我會及時更正。dispatcherservlet繼承了httpservlet並把doget,dopost等一系列方法在內部都呼叫dopr...