JAX-RS初步介紹
JAX-RS 是代表restful web service的一套規(guī)范API,JAX-RS規(guī)范基于JAVA編程語言累颂,它是用來創(chuàng)建Restful 風(fēng)格的web services服務(wù)的。JAX-RS使用一系列注解來簡化java開發(fā)琳状。
JAX-RS也稱JSR339 (全稱java specifications requests java規(guī)范提案第339個)绵跷,由jcp(java community process)組織經(jīng)過投票通過。
為了加深對jsr的理解笙僚,舉一個簡單的例子芳肌,jsr 330標(biāo)準(zhǔn)就是依賴注入的提案,已經(jīng)通過肋层。
規(guī)范說明
規(guī)范定義了一些常見的注解(見下表)亿笤,用來標(biāo)注一種資源文件為restfun風(fēng)格的資源文件:
Jersey
Jersey RESTful 框架是開源的RESTful框架, 實現(xiàn)了JAX-RS (JSR 311 & JSR 339) 規(guī)范。它擴展了JAX-RS 參考實現(xiàn)栋猖, 提供了更多的特性和工具净薛, 可以進(jìn)一步地簡化 RESTful service 和 client 開發(fā)。盡管相對年輕蒲拉,它已經(jīng)是一個產(chǎn)品級的 RESTful service 和 client 框架肃拜。與Struts類似,它同樣可以和hibernate,spring框架整合全陨。
由于ssm整合在市場的占有率太高爆班,所以很少一部分人去關(guān)注Jersey。所以網(wǎng)上有關(guān)于Jersey的介紹很少辱姨。但是它確實是一個非常不錯的框架柿菩。對于請求式服務(wù),對于GET,DELETE請求雨涛,你甚至只需要給出一個URI即可完成操作枢舶。
下面使用springboot整合jersey開發(fā)一個例子,首先創(chuàng)建項目:
可以看到測試接口只依賴一個jersey組件即可替久,要使用jersey凉泄,原來的web組件不用依賴了。
首先寫一個不帶參數(shù)的控制器:
然后來一個帶參數(shù)的:
我們這時候啟動服務(wù)蚯根,訪問接口后众,是無法訪問的:
兩個接口都是提示報404,找不到。原因是我們的控制器bean需要注冊到ResourceConfig中蒂誉,n那么什么是ResourceConfig教藻?
ResourceConfig
為了方便我們自定義應(yīng)用,Jersey提供了org.glassfish.jersey.server.ResourceConfig類來簡化我們的操作右锨。ResourceConfig類是Jersey自己實現(xiàn)了Application括堤,并且還實現(xiàn)了Configuration接口。
ResourceConfig類提供了非常多的方法來注冊JAX-RS組件绍移,比如自動的資源類掃描就是其提供的眾多功能之一悄窃。
我們想要使用ResourceConfig類來注冊我們自己的組件,只需要繼承ResourceConfig蹂窖,并且在構(gòu)造方法中轧抗,注冊我們自己的組件即可。
例如恼策,把控制器的幾個Bean注冊進(jìn)去可以這樣寫:
這時候鸦致,重啟服務(wù)潮剪,訪問即可成功:
如果控制器有多個涣楷,這樣寫顯然很麻煩,那么掃碼包路徑是更好的選擇:
上面的路徑是可以傳多個的抗碰,這時候重啟狮斗,發(fā)現(xiàn)可以訪問:
ResourceConfig中常用的方法如下:
packages:提供自動掃描組件,包括資源類弧蝇,Provider碳褒,F(xiàn)eature;如果有多個包需要掃描看疗,用分號隔開沙峻;
registerClasses:提供手動注冊組件,包括資源類两芳,Provider摔寨,F(xiàn)eature等,提供可變參數(shù)同時注冊多個怖辆;
register:提供手動注冊組件是复,包括Provider和Feature;
property:提供手動添加配置選項的方法竖螃;
例如:
代碼:https://gitee.com/blueses/spring-boot-demo