SpringBoot创建WebService方法详解
作者:ceaningking 发布时间:2022-02-08 10:29:31
标签:SpringBoot,WebService
开发环境: IDEA 2022.1.4
1. 概述
虽然webservice这块使用很少,但在局域网作服务还是相当不错。今天突生想法,想做一个来试试,查阅百度资料,亲手实践下。方便操作,便在现有得SpringBoot项目上,来实践下,也顺便试试Spring web服务与webservice功能是否可以一起发布。
我主要添加了三个java文件,一个接口IWebService,一个接口实现类IWebServiceImpl,一个配置类CxfConfig。
2. 实现步骤
2.1 POM现加依赖
<!-- 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 创建类 IWebServiceImpl 并实现接口 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 启动服务
浏览器访问: http://127.0.0.1:8090/open/xtjk/IWebService?wsdl
需要注意URL路径和CxfConfig得配置关联
2.6 测试
我使用另一个电脑安装得SoapUI进行测试,数据获取正常。就不截图了。
篇幅有限,就不罗列其他得了。Springboot相关知识网上很多。
来源:https://blog.csdn.net/ceaningking/article/details/130456201


猜你喜欢
- 开门见山 项目运行的环境里面已经有该项目的所有代码依赖,所以项目的代码只要将自己的代码打入进去就能提交到环境中运行了。但是不好的地方就是项
- 基于springboot+vue的测试平台开发继续更新。一、前端Tree树形控件的append方法在elementUI 树控件下有个appe
- 问题在使用 Abp 框架的后台作业时,当后台作业抛出异常,会导致整个程序崩溃。在 Abp 框架的底层执行后台作业的时候,有 try/catc
- 本文实例讲述了Android编程实现webview将网页打包成apk的方法。分享给大家供大家参考,具体如下:功能非常简单,而且乍一看没什么特
- C#Windows server2016服务器搭建NFS共享文件夹与C#上传图片到共享文件夹nfs共享文件夹实现步骤基于:Windows s
- 1. 插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于t
- 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……public class Singleton
- 在1.zip中增加一张新图片StorageFile jpg = await KnownFolders.PicturesLibrary.Get
- 判断是否为飞行模式: boolean isAirplaneMode = Settings.System.getInt(mConte
- 一、返回一般数据类型比如要根据 id 属性获得数据库中的某个字段值。mapper 接口:// 根据 id 获得数据库中的 username
- C#与Java相比较从整体上来看,c#和java及其相似,甚至超过了c#与c、c++的相似程度,下面是两种语言的比较。两者都能编译成跨平台,
- 这篇文章主要介绍了Java判断用户名和密码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- C#实现的对两个Table进行Merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义。如下是对两个table进行Merge
- SpringTask是Spring自带的功能。实现起来比较简单。使用SpringTask实现定时任务有两种方式:1.注解方式基于注解@Sch
- 项目代码:https://github.com/bruceq/supermarket项目结构:依赖关系:common:公共层,无依赖dao:
- 一、前言最近写了个项目,前端还没写,需要部署到服务器给女朋友实现前端,可是不熟悉Linux的我,蹑手蹑脚,真的是每一步都是bug,可谓是步步
- 最近学习Spring的源码,发现一个利器BeanPostProcessor。这个后置处理器可以在bean初始化前后对bean进行操作。我们可
- 1、WinForm中datagridview增加行号在界面上拖一个控件dataGridView1,在datagridview添加行事件中添加
- Fragment必须是依存于Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的
- 在项目中,都会用到ListView或GridView等列表控件。一般会用来展示从网络请求的数据 。如果请求的数据为空或者在请求的时候正好无没