SpringBoot創(chuàng)建WebService方法詳解
開發(fā)環(huán)境: IDEA 2022.1.4
1. 概述
雖然webservice這塊使用很少,但在局域網(wǎng)作服務(wù)還是相當不錯。今天突生想法,想做一個來試試,查閱百度資料,親手實踐下。方便操作,便在現(xiàn)有得SpringBoot項目上,來實踐下,也順便試試Spring web服務(wù)與webservice功能是否可以一起發(fā)布。
我主要添加了三個java文件,一個接口IWebService,一個接口實現(xiàn)類IWebServiceImpl,一個配置類CxfConfig。
2. 實現(xiàn)步驟
2.1 POM現(xiàn)加依賴
<!-- WebSevice --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.6</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.6</version> </dependency>
2.2 定義接口 IWebService
@WebService(name = "WebService", targetNamespace = "service.xtjk.ceaning.com") @BindingType(SOAPBinding.SOAP12HTTP_BINDING) public interface IWebService { @WebMethod String BedInfo() throws JsonProcessingException; @WebMethod Result<?> DeptInfo(); @WebMethod Result<?> UserInfo(); @WebMethod Result<?> WardInfo(); @WebMethod Result<?> OrderInfo(@WebParam(name = "param") String param); @WebMethod Result<?> InPatiengInfo(@WebParam(name = "param") String param); @WebMethod Result<?> SaveGlu(@WebParam(name = "param") String param); }
2.3 創(chuàng)建類 IWebServiceImpl 并實現(xiàn)接口 IWebService
@Slf4j @Component @WebService(name = "WebService", targetNamespace = "service.xtjk.ceaning.com", endpointInterface = "com.ceaning.xtjk.service.IWebService") public class IWebServiceImpl implements IWebService { @Autowired private DictionaryMapper dictionaryMapper; @Autowired private OrderMapper orderMapper; @Autowired private InPatientMapper inPatientMapper; @Autowired private ResultMapper resultMapper; @Override public String BedInfo() throws JsonProcessingException { ObjectMapper obj= new ObjectMapper(); List<Bed> list= null; try{ list= dictionaryMapper.getBedInfo(); return obj.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return obj.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String DeptInfo() throws JsonProcessingException { ObjectMapper obj= new ObjectMapper(); List<Dept> list= null; try{ list= dictionaryMapper.getDeptInfo(); return obj.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return obj.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String UserInfo() throws JsonProcessingException { ObjectMapper obj= new ObjectMapper(); List<User> list= null; try{ list= dictionaryMapper.getUserInfo(); return obj.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return obj.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String WardInfo() throws JsonProcessingException { ObjectMapper obj= new ObjectMapper(); List<Ward> list= null; try{ list= dictionaryMapper.getWardInfo(); return obj.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return obj.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String OrderInfo(String param) throws JsonProcessingException { ObjectMapper mapper= new ObjectMapper(); List<Order> list= null; try{ OrderParam obj= mapper.readValue(param, OrderParam.class); list= orderMapper.getList(obj); return mapper.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return mapper.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String InPatiengInfo(String param) throws JsonProcessingException { ObjectMapper mapper= new ObjectMapper(); List<InPatient> list= null; try{ InPatientParam obj= mapper.readValue(param, InPatientParam.class); list= inPatientMapper.getList(obj); return mapper.writeValueAsString(Result.ok(list)); } catch (Exception e){ log.error(e.getMessage()); return mapper.writeValueAsString(Result.exception(e.getMessage())); } } @Override public String SaveGlu(String param) throws JsonProcessingException { ObjectMapper mapper= new ObjectMapper(); DbResult ret= null; try{ ResultParam obj= mapper.readValue(param, ResultParam.class); ret= resultMapper.save(obj); if (ret.getCode().trim().equals("T")){ return mapper.writeValueAsString(Result.ok(ret.getMessage())); } else{ return mapper.writeValueAsString(Result.error(ret.getMessage())); } } catch (Exception e){ log.error(e.getMessage()); return mapper.writeValueAsString(Result.exception(e.getMessage())); } } }
2.4 配置類 CxfConfig
@Configuration public class CxfConfig { @Autowired private IWebService service; @Bean public ServletRegistrationBean disServlet(){ return new ServletRegistrationBean(new CXFServlet(), "/open/xtjk/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus(){ return new SpringBus(); } @Bean public Endpoint endpoint(){ EndpointImpl endpoint= new EndpointImpl(springBus(), service); endpoint.publish("/IWebService"); return endpoint; } }
2.5 啟動服務(wù)
瀏覽器訪問: http://127.0.0.1:8090/open/xtjk/IWebService?wsdl
需要注意URL路徑和CxfConfig得配置關(guān)聯(lián)
2.6 測試
我使用另一個電腦安裝得SoapUI進行測試,數(shù)據(jù)獲取正常。就不截圖了。
篇幅有限,就不羅列其他得了。Springboot相關(guān)知識網(wǎng)上很多。
到此這篇關(guān)于SpringBoot創(chuàng)建WebService方法詳解的文章就介紹到這了,更多相關(guān)SpringBoot創(chuàng)建WebService內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring boot webService使用方法解析
- SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)
- SpringBoot整合WebService的實現(xiàn)示例
- SpringBoot調(diào)用第三方WebService接口的兩種方法
- SpringBoot調(diào)用對方webService接口的幾種方法示例
- SpringBoot整合WebService的實戰(zhàn)案例
- springboot整合webservice使用簡單案例總結(jié)
- Java(Springboot)項目調(diào)用第三方WebService接口實現(xiàn)代碼
相關(guān)文章
Java?synchronized底層實現(xiàn)原理以及鎖優(yōu)化
Synchronized是Java中解決并發(fā)問題的一種最常用的方法,也是最簡單的一種方法,下面這篇文章主要給大家介紹了關(guān)于Java?synchronized底層實現(xiàn)原理以及鎖優(yōu)化的相關(guān)資料,需要的朋友可以參考下2022-02-02linux部署出現(xiàn)java文件操作報錯:java.io.FileNotFoundException解決辦法
這篇文章主要g介紹了linux部署出現(xiàn)java文件操作報錯:java.io.FileNotFoundException解決的相關(guān)資料,這個錯誤通常表示你的Spring Boot應用程序無法找到指定的文本文件,需要的朋友可以參考下2023-12-12SpringBoot整合Swagger3生成接口文檔過程解析
這篇文章主要介紹了SpringBoot整合Swagger3生成接口文檔過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07MyBatis實現(xiàn)動態(tài)查詢、模糊查詢功能
這篇文章主要介紹了MyBatis實現(xiàn)動態(tài)查詢、模糊查詢功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06