日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

解決springboot整合cxf-jaxrs中json轉(zhuǎn)換的問題

瀏覽:29日期:2023-02-26 11:45:26
前言

我在將項(xiàng)目用boot重構(gòu)時(shí), 關(guān)于cxf的使用出了一些問題, 主要在實(shí)體類和json轉(zhuǎn)換這一方面。

在看了一些晚上的相關(guān)答案后, 了解到j(luò)axb默認(rèn)支持xml格式, 而實(shí)現(xiàn)對象轉(zhuǎn)json是需要額外的轉(zhuǎn)換器的,然后在stackoverflow上找到一個(gè)解決方法是聲明一個(gè)bean,注入JsonProvider,但我發(fā)現(xiàn)這個(gè)可以解決服務(wù)端將對象轉(zhuǎn)為json的問題,

而客戶端還是會(huì)報(bào)一個(gè)異常:

No message body reader has been found for class ......, ContentType: application/json

后面在cxf的WebClient類的源碼中發(fā)現(xiàn):

create()方法有很多重載方法,其中有一個(gè)是可以指定provider來轉(zhuǎn)換格式,最后通過這個(gè)重載方法解決了客戶端json格式轉(zhuǎn)換問題。

解決springboot整合cxf-jaxrs中json轉(zhuǎn)換的問題

最后的解決方案:

在單獨(dú)使用cxf的基礎(chǔ)上做出改動(dòng),主要有兩方面

1. 服務(wù)端:在啟動(dòng)類上聲明一個(gè)bean, 注入JacksonJaxbJsonProvider

2. 客戶端:在WebClient調(diào)用create()方法時(shí),指定轉(zhuǎn)json的provider

下面是一個(gè)簡單的demo:

一、webservice服務(wù)端(生產(chǎn)者)1.maven依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--cxf-jaxrs-starter--><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxrs</artifactId><version>3.2.0</version></dependency><!--jaxrs轉(zhuǎn)json工具--><dependency><groupId>com.fasterxml.jackson.jaxrs</groupId><artifactId>jackson-jaxrs-json-provider</artifactId><version>2.8.5</version></dependency>2.application.yml配置文件

配置cxf路徑和包掃描

server: port: 9001cxf: path: /services servlet.init: service-list-path: /info jaxrs: component-scan: true3.boot應(yīng)用啟動(dòng)類配置

在啟動(dòng)類中聲明一個(gè)bean,自動(dòng)注入JacksonJaxbJsonProvider 對象,這樣cxf在將對象轉(zhuǎn)為json時(shí)會(huì)自動(dòng)使用這個(gè)對象

@SpringBootApplicationpublic class CxfServerApplication { public static void main(String[] args) {SpringApplication.run(CxfServerApplication.class, args);} // 配置一個(gè)對象與json轉(zhuǎn)換的工具@Beanpublic JacksonJaxbJsonProvider jacksonJaxbJsonProvider() {return new JacksonJaxbJsonProvider();}}4.客戶服務(wù)接口

關(guān)于cxf的路徑注解,請參照其他cxf資料

@Path('/customerService')public interface CustomerService { /** * 客戶服務(wù):根據(jù)id查詢客戶 */ @Path('/findById') @GET @Produces({'application/xml', 'application/json'}) Customer findById(@QueryParam('id')Integer id);}5.客戶服務(wù)實(shí)現(xiàn)類

一個(gè)簡單的實(shí)現(xiàn)類, 不需要加額外注解, 注入dao從數(shù)據(jù)庫查詢數(shù)據(jù)返回(dao層代碼未貼出, 可自行實(shí)現(xiàn))。

@Service@Transactionalpublic class CustomerServiceImpl implements CustomerService { @Autowired private CustomerDao customerDao; @Override public Customer findById(Integer id) {// 調(diào)用dao, 從數(shù)據(jù)庫查詢客戶return customerDao.findById(id); }}二、webservice客戶端(消費(fèi)者)1.maven依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--cxf-jaxrs-starter--><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxrs</artifactId><version>3.2.0</version></dependency><!--jaxrs轉(zhuǎn)json工具--><dependency><groupId>com.fasterxml.jackson.jaxrs</groupId><artifactId>jackson-jaxrs-json-provider</artifactId><version>2.8.5</version></dependency>2.配置轉(zhuǎn)json工具

由于WebClient的create()方法需要的是List<Provider>形式的參數(shù),所以創(chuàng)建一個(gè)繼承ArrayList類的JsonProvider,在構(gòu)造方法中添加JacksonJaxbJsonProvider對象元素

@Componentpublic class JsonProvider extends ArrayList<JacksonJaxbJsonProvider> {// 在構(gòu)造方法中, 添加JacksonJaxbJsonProvider public JsonProvider(){this.add(new JacksonJaxbJsonProvider()); }}3.使用WebClient調(diào)用webservice服務(wù)

在Controller內(nèi)注入上面創(chuàng)建的自定義的JsonProvider,并在WebClient調(diào)用create()方法時(shí),作為方法參數(shù)注入,以此達(dá)到手動(dòng)指定json轉(zhuǎn)換器的目的

@Controllerpublic class CustomerController { // 注入配置的轉(zhuǎn)json工具 @Autowired private List<JacksonJaxbJsonProvider> jsonProvider; @RequestMapping('/customer_findById') @ResponseBody public List<Customer> findById(Integer id) {//調(diào)用webservice獲取查詢數(shù)據(jù)Customer customer = WebClient.create('http://localhost:9001/services/customerService/findById?id='+id, jsonProvider).accept(MediaType.APPLICATION_JSON).get(Customer.class);return customer; }}三、其他注意1.需要用xml/json格式轉(zhuǎn)換后傳輸?shù)膶?shí)體類要在類名上加一個(gè)注解

@XmlRootElement(name = 'xxx')2.上面demo使用的cxf-spring-boot-starter-jaxrs版本為3.2.0

在3.2.1以后的版本需要手動(dòng)配置ViewResolver

否則會(huì)報(bào)錯(cuò):

@ConditionalOnProperty(spring.mvc.locale) did not find property ’locale’ (OnPropertyCondition)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人精品天堂一区二区三区| 精品一区不卡| 激情国产在线| 麻豆一区二区在线| 大香伊人久久精品一区二区| 精品国产美女a久久9999| 国产精品成人国产| 国产一区二区视频在线看| 老司机免费视频一区二区三区| 国产精品一页| 国产一区二区三区四区| 日韩1区在线| 日韩大片在线| www.九色在线| 久久精品高清| 美女网站久久| 91麻豆精品激情在线观看最新 | 三级在线观看一区二区| 亚洲欧美在线综合| 97久久亚洲| 精品一区二区三区中文字幕视频| 最新中文字幕在线播放 | 综合国产视频| 欧美日韩夜夜| 日韩1区2区| 欧美手机在线| 亚洲精品系列| 精品午夜久久| 久久精品播放| 日本国产亚洲| 四虎国产精品免费观看| 亚洲国产专区| 宅男噜噜噜66国产日韩在线观看| 一区二区不卡| 精品久久久久久久| 亚州av乱码久久精品蜜桃| 亚洲人成亚洲精品| 精品丝袜久久| 99热精品久久| 少妇精品久久久一区二区| 美腿丝袜亚洲三区| 免费观看久久av| 婷婷久久免费视频| 欧美亚洲日本精品| 中文一区一区三区免费在线观 | 日韩在线麻豆| 久久伊人亚洲| 欧美不卡视频| 国产欧美日韩在线观看视频| 成人在线免费观看91| 亚洲成人一区| 欧美专区一区| 综合日韩av| 亚洲精品系列| 极品av在线| 亚洲人成网站在线在线观看| 色网在线免费观看| 日韩精彩视频在线观看| 蜜桃精品在线| 日本国产一区| 欧美日韩激情| 久久精品网址| 亚洲精品高潮| 久久久蜜桃一区二区人| 日本不卡中文字幕| 91九色精品| 久久精品免费看| 久久亚洲色图| 正在播放日韩精品| 国产免费播放一区二区| 久久av一区二区三区| 欧美国产美女| 日本va欧美va瓶| 亚洲一级黄色| 久久精品天堂| 青青草精品视频| 亚洲激情偷拍| 日本欧美不卡| 老司机精品视频网| 日韩一区二区三区四区五区| 欧美成人久久| 成人三级高清视频在线看| 日韩激情综合| 伊人成人在线视频| 久久久久久夜| 麻豆精品av| 国产日韩亚洲| 综合欧美精品| 黄色成人91| 精品日韩视频| 精品视频高潮| 欧美在线看片| 一区二区三区四区日韩| 午夜欧美精品| 久久精品电影| 国产aⅴ精品一区二区三区久久| 日本午夜精品视频在线观看| 免费国产自线拍一欧美视频| 久久激情一区| 中文字幕在线视频网站| 欧美激情在线精品一区二区三区| 中文字幕免费一区二区| 欧美日韩国产综合网| 秋霞影视一区二区三区| 成人在线免费观看91| 国产精品久久久网站| 91精品视频一区二区| 亚洲欧洲美洲国产香蕉| 羞羞答答国产精品www一本| 蜜桃视频欧美| 99视频精品全国免费| 午夜精品久久久久久久久久蜜桃| 91欧美在线| 免费日韩一区二区三区| 国产精品v一区二区三区| 欧美日韩一区二区三区四区在线观看 | 快播电影网址老女人久久| 88久久精品| 日本亚州欧洲精品不卡| 亚洲v天堂v手机在线| 亚洲精品亚洲人成在线观看| 亚洲精品成a人ⅴ香蕉片| 在线视频亚洲欧美中文| 免费人成精品欧美精品| 老鸭窝亚洲一区二区三区| 亚洲在线电影| 在线视频亚洲欧美中文| 婷婷成人av| 亚洲精品动态| 青草久久视频| 国产欧美久久一区二区三区| 国产欧美三级| 国产精久久久| 国产精品欧美三级在线观看| 国产精品羞羞答答在线观看| 国产精品网站在线看| 精品一区91| 蜜桃av在线播放| 99成人超碰| 亚洲一区久久| 日本一区免费网站| 国产欧美另类| 高清一区二区三区av| 午夜精品成人av| 欧美特黄a级高清免费大片a级| 久久成人国产| 日韩av中文字幕一区| 国产精品亚洲四区在线观看| 精品中文字幕一区二区三区 | 欧美亚洲二区| 麻豆91精品视频| 蜜臀国产一区| 亚洲黑丝一区二区| 亚洲欧美日本视频在线观看| 亚洲一二av| 国产精品扒开腿做爽爽爽软件| 色婷婷亚洲mv天堂mv在影片| 99精品国产一区二区三区| 国产一区二区精品| 亚洲一区二区三区无吗| 国产亚洲电影| 日韩高清成人| 免费人成黄页网站在线一区二区| 日本h片久久| 欧美国产一级| 亚洲一区激情| 国产精品国产三级在线观看| 97精品国产| 亚洲中字黄色| 国产精品1区| 激情自拍一区| 亚洲专区视频| 欧美激情另类| 视频一区视频二区中文字幕| 国产日韩视频在线| 天堂资源在线亚洲| 欧美日韩夜夜| 久久三级福利| 欧美天堂一区二区| 欧美日韩精品一区二区视频| 日本午夜精品久久久久| 日韩一区二区三区免费| 亚洲精品美女| 日韩欧美视频专区| 日韩美女精品| 色婷婷精品视频| 日韩一区二区三区在线看| 亚洲免费福利| 亚洲aa在线| 超碰在线99| 日韩精品一区二区三区av| 日韩免费一区| 久久激情av| 日韩午夜电影| 成人一二三区| 日韩激情网站| 午夜国产精品视频免费体验区| 国产精品xxx| 亚洲无线观看| 久久国产主播|