日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Spring 4.1和Java 8:java.util.Optional

發布時間:2023/12/3 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 4.1和Java 8:java.util.Optional 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


由于Spring 4.1的Java 8的的java.util.Optional ,容器對象可能會或可能不包含非空值,支持與@RequestParam , @RequestHeader和@MatrixVariable 。 使用Java 8的java.util.Optional請確保參數永遠不會為null 。


請求參數

在此示例中,我們將使用@RequestParam將java.time.LocalDate綁定為java.util.Optional :

@RestController @RequestMapping("o") public class SampleController {@RequestMapping(value = "r", produces = "text/plain")public String requestParamAsOptional(@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)@RequestParam(value = "ld") Optional<LocalDate> localDate) {StringBuilder result = new StringBuilder("ld: ");localDate.ifPresent(value -> result.append(value.toString()));return result.toString();} }

在Spring 4.1之前,我們會遇到一個例外,即找不到匹配的編輯器或轉換策略。 從Spring 4.1開始,這不再是問題。 為了驗證綁定是否正常工作,我們可以創建一個簡單的集成測試:

@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @WebAppConfiguration public class SampleSomeControllerTest {@Autowiredprivate WebApplicationContext wac;private MockMvc mockMvc;@Beforepublic void setUp() throws Exception {mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();}// ...}

在第一個測試中,我們將檢查綁定是否正常工作以及是否返回了正確的結果:

@Test public void bindsNonNullLocalDateAsRequestParam() throws Exception {mockMvc.perform(get("/o/r").param("ld", "2020-01-01")).andExpect(content().string("ld: 2020-01-01")); }

在下一個測試中,我們將不傳遞ld參數:

@Test public void bindsNoLocalDateAsRequestParam() throws Exception {mockMvc.perform(get("/o/r")).andExpect(content().string("ld: ")); }

兩個測試都應該是綠色的!

請求標題

同樣,我們可以將@RequestHeader綁定到java.util.Optional :

@RequestMapping(value = "h", produces = "text/plain") public String requestHeaderAsOptional(@RequestHeader(value = "Custom-Header") Optional<String> header) {StringBuilder result = new StringBuilder("Custom-Header: ");header.ifPresent(value -> result.append(value));return result.toString(); }

和測試:

@Test public void bindsNonNullCustomHeader() throws Exception {mockMvc.perform(get("/o/h").header("Custom-Header", "Value")).andExpect(content().string("Custom-Header: Value")); }@Test public void noCustomHeaderGiven() throws Exception {mockMvc.perform(get("/o/h").header("Custom-Header", "")).andExpect(content().string("Custom-Header: ")); }

矩陣變量

在Spring 3.2中@MatrixVariable注釋指示方法參數應綁定到路徑段內的名稱/值對:

@RequestMapping(value = "m/{id}", produces = "text/plain") public String execute(@PathVariable Integer id,@MatrixVariable Optional<Integer> p,@MatrixVariable Optional<Integer> q) {StringBuilder result = new StringBuilder();result.append("p: ");p.ifPresent(value -> result.append(value));result.append(", q: ");q.ifPresent(value -> result.append(value));return result.toString(); }

可以通過/o/m/42;p=4;q=2 url調用上述方法。 讓我們為此做一個測試:

@Test public void bindsNonNullMatrixVariables() throws Exception {mockMvc.perform(get("/o/m/42;p=4;q=2")).andExpect(content().string("p: 4, q: 2")); }

不幸的是,該測試將失敗,因為默認情況下,Spring MVC中禁用了對@MatrixVariable批注的支持。 為了啟用它,我們需要調整配置并將RequestMappingHandlerMapping的removeSemicolonContent屬性設置為false 。 默認情況下,它設置為true 。 我已經用WebMvcConfigurerAdapter完成了,如下所示:

@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void configurePathMatch(PathMatchConfigurer configurer) {UrlPathHelper urlPathHelper = new UrlPathHelper();urlPathHelper.setRemoveSemicolonContent(false);configurer.setUrlPathHelper(urlPathHelper);} }

現在所有測試都通過了! 請在這里找到本文的源代碼: https : //github.com/kolorobot/spring41-samples

翻譯自: https://www.javacodegeeks.com/2014/07/spring-4-1-and-java-8-java-util-optional.html

總結

以上是生活随笔為你收集整理的Spring 4.1和Java 8:java.util.Optional的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲视频欧美 | 一本色道久久综合亚洲精品按摩 | 中文字幕一区二区在线播放 | 黄色观看网站 | 色妞ww精品视频7777 | 91精品久久香蕉国产线看观看 | 国产精品影音先锋 | 久久影音 | 国产最新视频在线 | 在线看的av | 国产精品入口66mio | 欧美日一区二区 | 亚洲性图一区二区 | 国产精品手机视频 | 免费在线播放视频 | 免费在线黄色av | 国产一级视频在线 | 一本色道久久88亚洲精品综合 | 色呦呦免费 | 99在线观看视频 | 99色在线视频| 人妻熟女一区二区aⅴ水野 91在线观看视频 | 黄色大片a级 | 久操这里只有精品 | 涩涩精品| 黄色小视频国产 | 日韩欧美一区二区三区在线观看 | 日日干夜夜爽 | 开心激情久久 | 一级片大全| 免费观看成年人视频 | 成人久久久精品乱码一区二区三区 | 成人啪啪18免费游戏链接 | 乳罩脱了喂男人吃奶视频 | 国产小视频在线观看免费 | 男生草女生的视频 | 日日夜夜操操 | 色呦呦呦呦| 色偷偷av | 制服一区 | 国内精品一区二区 | 青青草视频网站 | 国产精品免费无遮挡无码永久视频 | 午夜小视频在线观看 | 欧洲成人一区二区三区 | 国产页 | 婷婷射丁香 | 自拍视频在线播放 | 午夜网站在线观看 | 黄色小网站入口 | 黄色理论片 | 中文乱码人妻一区二区三区视频 | 先锋影音av在线资源 | 国产亚洲精品久久久久久 | 丁香在线| 久久久久久久久久久久久国产 | 久久免费视频一区二区 | 亚洲女人18毛片水真多 | 韩国三级hd中文字幕有哪些 | 青青草草视频 | 日日撸视频 | 久久久久99精品成人片试看 | 91热久久 | 日本大胆人体视频 | 色噜噜狠狠一区二区三区牛牛影视 | 天天操天天干天天插 | 日本一区免费电影 | 欧美日韩精品在线视频 | 黄色成人在线网站 | 三级黄色免费片 | 涩涩成人 | 亚洲免费黄色片 | 欧美一二三级 | 中国黄色在线视频 | 国产男女视频 | 中国免费黄色 | 日韩欧美视频免费观看 | a级片日本| av网站黄色 | 欧美国产一二三区 | 超碰97在线免费观看 | av在线不卡网 | 亚洲快播 | 国产亚洲精久久久久久无码77777 | 午夜精品久久久久久久久久久久 | 日韩a级在线观看 | 久久久美女视频 | 亚洲男人天堂网站 | 天天操夜夜爱 | 美女在线免费视频 | 色爱视频 | 成人影院免费 | 大地资源二中文在线影视免费观看 | 亚洲va天堂va欧美ⅴa在线 | 日韩精品一区在线观看 | 91一区二区在线观看 | 黄色xxxxxx | 可以直接看av的网址 | 欧美超碰在线观看 |