spring接口开发(spring开放api实现)

网友投稿 682 2023-03-10


本篇文章给大家谈谈spring接口开发,以及spring开放api实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享spring接口开发的知识,其中也会对spring开放api实现进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

SpringBoot 规范接口开发流程

UserService

这种写法每次都要在controller层传入BindingResult,很不方便,接下来用自动抛出异常的方式去进一步优化

这时候后端已经引发了 MethodArgumentNotValidException 异常,并且前端收到的数据如下

后端直接将整个错误对象相关信息都响应给前端了,这是因为虽然引发了异常,但是我们没有去对其进行处理,所以走了SpringBoot默认的异常处理流程,现在开始进行全局异常处理

自定义异常的好处

还能在全局异常处理中处理Exception异常,这样无论遇到什么Exception都能够统一返回给前端,不过这种一般建议是在项目上线之前才这样做,开发的时候为了方便调试还是不太建议这样做

写一个新的api,返回的类型不再是ResultVo,而是直接返回实体类对象,这样就会走beforeBodyWrite方法去包装,然后真正返回给前端的还是ResultVO,这样做的目的就是可以省去我们自己手动封装数据到ResultVO的过程

效果

上面实体类中,id字段没有加上自定义注解,所以会走统一的VALIDATE_FAILED封装的响应体,而其他字段都加上了自定义注解,所以遇到字段校验出错时就会用自定义注解中的errcode和errmsg去封装返回

SpringBoot|| Spring Cloud 整合cxf开发webService接口服务端-流程步骤

Apache CXF 是一个开源的 Service 框架,简化用户的 service 开发,基于CXF开发的应用可提供 SOAP 、 XML/HTTP 、 RESTFUL HTTP 或 CORBA 等服务。 CXF 底层页可以使用不同的传输协议,包括 HTTP 、 JMS 或 JBI 等。

自定义注解标注要发布的服务类,发布出去

在接口上添加 @WebService 注解

通过浏览器访问wsdl,wsdl路径即为发布的路径加上?wsdl

:[端口号]/cxf/test?wsdl

可以看到接口就成功了。

到此服务端开发结束!

如果是soapui工具,发送的参数包括xml的:将xml写在 <![CDATA[ 【xml】]] 里面

用 SpringBoot 实现简单的接口

上篇文章已经介绍了 SpringBoot 的基本使用过程 ,本文主要介绍用那篇文章中配置好的SpringBoot工程实现简单的接口。

最终工程目录是下面这样:

这是个简陋的目录结构,仅供我们参考,其中主要分为四类:

最后还有一个..Application类,系统默认生成,不需要处理。

可以通过浏览器、PostMan调用以上写好的两个接口,来测试一下接口是否正常。在调用时注意检查IP地址、端口、接口名和参数是否设置正确。

瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

假设实现一个注册用户的功能,在controller 层,他会先进行校验参数,如下:

以上代码有什么问题嘛? 其实没什么问题,就是校验有点辣眼睛 。正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:

我们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上, spring boot 有个 validation 的组件,我们可以拿来即用。引入这个包即可:

引入包后,参数校验就非常简洁啦,如下:

然后在 UserParam 参数对象中,加入 @Validated 注解哈,把错误信息接收到 BindingResult 对象,代码如下:

如果你在你们项目代码中,看到controller 层报文返回结果,有这样的:

也有这样的:

显然,如果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如有的人喜欢用 Result 处理结果, 有点人 喜欢用 Response 处理结果,可以想象一下,这些代码有多乱。

所以作为后端开发,我们项目的响应结果,需要 统一标准的返回格式 。一般一个标准的响应报文对象,都有哪些属性呢?

响应状态码一般用枚举表示哈:

因为返回的数据类型不是确定的,我们可以使用泛型,如下:

有了统一的响应体,我们就可以优化一下controller 层的代码啦:

日常开发中,我们一般都是自定义统一的异常类,如下:

在controller 层,很可能会有类似代码:

这块代码,没什么问题哈,但是如果 try...catch 太多,不是很优雅。

可以借助注解 @RestControllerAdvice ,让代码更优雅。 @RestControllerAdvice 是一个应用于 Controller 层的切面注解,它一般配合 @ExceptionHandler 注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。

还是原来的 UserController ,和一个会抛出异常的userService的方法,如下:

我们再定义一个全局异常处理器,用 @RestControllerAdvice 注解,如下:

我们有想要拦截的异常类型,比如想拦截 BizException 类型,就新增一个方法,使用 @ExceptionHandler 注解修饰,如下:

spring常用注解作用与常用接口与后置处理器

从spring2.5之后,spring注解驱动开发慢慢取代了Spring的xml配置文件的作用,而且目前流行的SpringBoot开发也是基于spring注解驱动做扩展的,所以想要理解好SpringBoot,就必须掌握一些spring的注解驱动。

以前xml的做法是

现在使用spring注解的做法是

java8之后ComponentScan注册加了@Repeatable(ComponentScans.class),可以直接在配置类上标注多个@Componentscan,在java8之前想配置多个@Componentscan扫描,需要用@ComponentScans

给容器注册组件(bean)的几种方式
1.包扫描+组件标注注解(@Service、@Controller、@Repository、@Componet),这种方式用于导入自己写的类
2.@Bean方式导入,常用入导入第三方包里面的类 默认bean id为导入执行的方法名
3.@Import方式导入(有三种用法),默认的bean id为全类名
4.通过FactoryBean(工厂bean)

-bean创建-初始化-销毁

applicationContextAeare和EmbeddedValueResolverAeare都是通过ApplicationContextAwareProcessor后置处理器来实现的

BeanFactoryPostProcessor是在bean定义信息加载完成后调用
BeanDefinitionRegistryPostProcessor是在bean定义信息将要加载时调用
先执行BeanDefinitionRegistryPostProcessor的实现类再执行BeanFactoryPostProcessor的实现类

创建bean的源码位置
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
-org.springframework.beans.factory.BeanFactory#getBean(java.lang.String, java.lang.Class<T)
--org.springframework.beans.factory.support.AbstractBeanFactory#createBean
---org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
执行bean对象的实例化
-org.springframework.beans.factory.support.AbstractBeanFactory#createBean
给bean的属性赋值
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean

initializeBean方法主要做了三个操作1.循环执行后置处理器的的前置方法(applyBeanPostProcessorsBeforeInitialization)、2.再执行初始化方法(invokeInitMethods),3.再执行后置处理器的的后置方法(applyBeanPostProcessorsAfterInitialization)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)

SpringMVC怎么开发返回json数据的web service 接口

SpringMVC返回json数据有三种方式:1、第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew。如: 或者同样要用jackson的jar包。2、第二种使用JSON工具将对象序列化成json,常用工具Jackson,fastjson,gson。利用HttpServletResponse,然后获取response.getOutputStream()或response.getWriter()直接输出。示例:[java] view plain copy print?public class JsonUtil { private static Gson gson=new Gson(); /** * @MethodName : toJson * @Description : 将对象转为JSON串,此方法能够满足大部分需求 * @param src * :将要被转化的对象 * @return :转化后的JSON串 */ public static String toJson(Object src) { if (src == null) { return gson.toJson(JsonNull.INSTANCE); } return gson.toJson(src); } } 3、第三种利用spring mvc3的注解@ResponseBody例如:[java] view plain copy print?@ResponseBody @RequestMapping("/list") public List list(ModelMap modelMap) { String hql = "select c from Clothing c "; Page page = new Page(); page.setPageSize(6); page = clothingServiceImpl.queryForPageByHql(page, hql); return page.getResult(); } 然后使用spring mvc的默认配置就可以返回json了,不过需要jackson的jar包哦。注意:当springMVC-servlet.xml中使用时,如果是3.1之前已经默认注入AnnotationMethodHandlerAdapter,3.1之后默认注入RequestMappingHandlerAdapter只需加上上面提及的jar包即可!如果是手动注入RequestMappingHandlerAdapter 可以这样设置配置如下:[html] view plain copy print? 添加包jackson-mapper-asl-*.jarjackson-core-asl-*.jarSpringMVC怎么开发返回json数据的web service 接口 关于spring接口开发和spring开放api实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 spring接口开发的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于spring开放api实现、spring接口开发的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ReactNative 之FlatList使用及踩坑封装总结
下一篇:Java应用开源框架实现简易web搜索引擎
相关文章

 发表评论

暂时没有评论,来抢沙发吧~