首页
学习
活动
专区
圈层
工具
发布

Spring 7.0更新特性大全,一次全学会

官方给出的弃用理由是: Spring的注解仅适用于字段、参数、返回值。 JSpecify注解在Spring注解基础上增加了类型、类。..."" : x; } // @NullMarked: // // 一旦某个类或包被标记为@NullMarked,则其中所有未使用@Nullable明确标记的参数、返回值或字段都将被视为不可为null。...// 在代码中,@NullMarked应用于整个方法声明,意味着该方法内部的所有类型使用(如参数list和toRemove)若未特别标注,则默认不可为null,除非显式使用@Nullable // @...v2.0.0..."); } 当客户端请求 API 时,若 v 参数值与 version 定义的值匹配,则该接口会被调用。...例如: 访问 /api/query?v=1.0.0,返回 query api v1.0.0... 访问 /api/query?v=2.0.0,返回 query api v2.0.0...

1.3K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一起来写OKHttp的拦截器

    相信熟悉 OKHttp 的同学都知道,OKHttp 内部是使用拦截器来完成请求和响应的,利用的是责任链设计模式。所以可以说,拦截器是 OKHttp 的精髓所在。...使用 Retrofit 比较多的同学肯定会条件反射出以下代码: @FormUrlEncoded @POST("/mobile/login.htm") Call login(@...假设现在我们有如下需求:在上面的 login 接口基础上,后台要求我们传过去的请求参数是要按照一定规则经过加密的。...还是后台需求,login 接口返回的数据也是经过 AES 加密的。所以需要我们针对所有响应体都做解密处理。 另外,还有很重要的一点,就是数据正常和异常时返回的 JSON 格式不一致。...重要的说三遍!!! 再说最后一遍,再见!!! 00:03 References 如何使用Retrofit请求非Restful API

    1.1K20

    Retrofit是如何创建的?为什么要用动态代理

    Retrofit的使用 通常我们是Retrofit是和Rxjava配合使用,这里我们不做用法上的过多研究,主要看原理,所以下面的代码都是Retrofit的自身API,没有用Rxjava。...接口 private volatile static API aPI = null; public static API createAPI() { if (aPI == null...所以到这里我们还是不知道adapterFactories是干嘛的,但是我们看到了这个类里面有enqueue方法,还有一些处理响应的一些方法,所以我们可以知道它的作用是处理请求和响应,具体的用法后面继续看源码可以看到...的核心,使用动态代理来处理我们在接口中定义的方法。...进行请求和响应的解析,将json字符串转换为具体的实体类 callAdapterFactories 请求和响应的具体处理适配器工厂数组,这里没有传的话默认为ExecutorCallAdapterFactory

    2.8K00

    Retrofit源码解析

    相信绝大多数的 Android 开发者都有使用过的经历。其 restful 风格的编程俘获了众多人的心。 废话就不多讲了,下面就要对 Retrofit 进行源码解析。...本文解析的 Retrofit 基于 v2.3.0 ,GitHub 地址:https://github.com/square/retrofit Retrofit 使用方法 直接抄官网的: 第一步,声明 API...总结起来就一句话:就是将 API 接口中的方法进行解析,构造成 ServiceMethod ,交给下面的 OkHttpCall 使用。...基本上做的事情就是: 创建 CallAdapter ; 创建 ResponseConverter; 根据 API 接口方法的注解构造网络请求方法; 根据 API 接口方法参数中的注解构造网络请求的参数;...使用了装饰者模式把 retrofit2.Call 又包装了一层。

    95120

    从零开始实现一个 mini-Retrofit 框架

    ,除此之外这两个网络请求都需要传入 一个Class对象表示响应的Json数据对应的Model,以便在内部使用Gson来解析,以及网络请求的异步回调 NetCallback 我们不直接使用OkHttp提供的...通过简单的一个实现,我们成功验证了使用注解加动态代理的方式实现一个声明式的网络请求框架是可行的,那么后续我们需要继续完善这个项目,提供对更多请求方式 以及参数的支持 对于其他请求方式的支持,我们可以添加更多的表示请求方式的注解...Call对象,而Call对象从使用上来说,目前还是有些繁琐,原生的Call对象返回的是ResponseBody还需要开发者自己处理并做转换。...TodayGankResponse todayGank(); } 也许我们可以在框架内部通过判断方法的返回类型是不是Call对象,如果不是,就在框架内部直接同步调用网络请求得到响应的Json内容后直接转换成...= NetCall.class) { return null; } //要求开发者方法的返回类型必须写成 NetCall 或者NetCall

    2.3K10

    扔掉okhttp、httpClient,来试试这款轻量级HTTP客户端神器?

    但是在某些情况下,用户可能需要自定义OkHttpClient,这个时候,可以在接口上定义返回类型是OkHttpClient.Builder的静态方法来实现。...扩展注解式拦截器 有的时候,我们需要在拦截注解动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解。...=false关闭 同步执行http请求,将响应体内容适配成接口方法的返回值类型实例。...如果方法的返回值类型为Retrofit.Response,则可以使用该适配器。 Retrofit自动根据方法返回值类型选用对应的CallAdapterFactory执行适配处理!...将响应体内容适配成CompletableFuture对象返回 Void: 不关注返回类型可以使用Void。

    2.2K30

    我终于决定要放弃okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽

    但是在某些情况下,用户可能需要自定义OkHttpClient,这个时候,可以在接口上定义返回类型是OkHttpClient.Builder的静态方法来实现。...扩展注解式拦截器 有的时候,我们需要在拦截注解动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解。...=false关闭 同步执行http请求,将响应体内容适配成接口方法的返回值类型实例。...如果方法的返回值类型为Retrofit.Response,则可以使用该适配器。 Retrofit自动根据方法返回值类型选用对应的CallAdapterFactory执行适配处理!...将响应体内容适配成CompletableFuture对象返回 Void: 不关注返回类型可以使用Void。

    4.1K50

    Spring Boot 的 HTTP 客户端框架

    但是在某些情况下,用户可能需要自定义OkHttpClient,这个时候,可以在接口上定义返回类型是OkHttpClient.Builder的静态方法来实现。...扩展注解式拦截器 有的时候,我们需要在拦截注解 动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解 。...=false关闭 同步执行http请求,将响应体内容适配成接口方法的返回值类型实例。...如果方法的返回值类型为Retrofit.Response,则可以使用该适配器。 Retrofit自动根据方法返回值类型选用对应的**CallAdapterFactory执行适配处理!...>: 将响应体内容适配成CompletableFuture对象返回 Void: 不关注返回类型可以使用Void。

    86510

    Retrofit解析9之流程解析

    retrofit.png PS:该图不是我画的,网上盗来的 这张图完美的诠释了Retrofit的整个流程图 首选创建Retrofit,配置响应的参数,然后Retrofit会的的请求都会交给OkHttp...Retrofit内部使用了动态代理,方便了使用,通过retrofit.create返回的其实是一个动态代理类,所有具体的逻辑处理交给ServiceMethod来进行处理。...所以我们把整个流程分解为5大部分 1、Retrofit初始化 2、发起网络请求 3、执行请求 4、处理响应 (一)、Retrofit初始化 具体代码如下: .baseUrl(API_URL...使用缓存的目的是,由于反射比较消耗性能,所以为了避免这种性能消耗,我们保证同一个接口(api)的同一个方法,只会创建一次,由于我们每次获取的接口(api)实例都是传入的class对象,而class对象是在进程内单例的...,会直接抛异常,比如你方法注解使用了@Multipart,但是在参数那里使用了注解Field,由于是互斥的,所以会抛异常。

    2.5K41

    不好意思,HttpClient 该换了!

    但是在某些情况下,用户可能需要自定义OkHttpClient,这个时候,可以在接口上定义返回类型是OkHttpClient.Builder的静态方法来实现。...扩展注解式拦截器 有的时候,我们需要在拦截注解 动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解 。...=false关闭 同步执行http请求,将响应体内容适配成接口方法的返回值类型实例。...如果方法的返回值类型为Retrofit.Response,则可以使用该适配器。 Retrofit自动根据方法返回值类型选用对应的CallAdapterFactory执行适配处理!...将响应体内容适配成CompletableFuture对象返回 Void: 不关注返回类型可以使用Void。

    41910

    扔掉okhttp、httpClient,来试试这款轻量级HTTP客户端神器?

    但是在某些情况下,用户可能需要自定义OkHttpClient,这个时候,可以在接口上定义返回类型是OkHttpClient.Builder的静态方法来实现。...扩展注解式拦截器 有的时候,我们需要在拦截注解 动态传入一些参数,然后再执行拦截的时候需要使用这个参数。这种时候,我们可以扩展实现自定义拦截注解 。...=false关闭 同步执行http请求,将响应体内容适配成接口方法的返回值类型实例。...如果方法的返回值类型为Retrofit.Response,则可以使用该适配器。 Retrofit自动根据方法返回值类型选用对应的CallAdapterFactory执行适配处理!...将响应体内容适配成CompletableFuture对象返回 Void: 不关注返回类型可以使用Void。

    2.8K30

    【建议收藏】Android实现Rxjava2+Retrofit完美封装

    本篇文章将介绍笔者在项目中对Retrofit的封装。 先来看一下封装过后的Retrofit如何使用。...生命周期 如何使用封装 小结 一.服务器响应数据的基类BasicResponse。...其中code为服务器返回的错误码。我们会事先和服务器约定成功时的code值,比如200表示请求成功。但通常在请求服务器数据过程中免不了会出现各种错误。例如用户登录时密码错误、请求参数错误的情况。...此时服务器会根据错误情况返回对应的错误码。一般来说,我们只关心成功时即code为200时的content数据。而对于code不为200时我们只需要给出对应的Toast提示即可。...例如没有网络、请求超时或者服务器返回了数据但在解析时出现了数据解析异常等。对于这样的情况我们也要进行统一处理的。

    2.6K50

    OkHttp 3.x 源码解析(一)之Interceptor 拦截器

    ,并不是凭空的去翻译API, 大都是自己亲自使用过后总结出的经验,再来一步步的构思去写,好的博客,笔者认为首先要构思清晰,由浅入深,再总结回顾,最后恍然大悟!...这个方法是所有HTTP工作发生的地方,以满足请求和响应的需求。 拦截器可以有多个,假设同时拥有一个压缩拦截器和一个校验拦截器:需要确定数据是否已压缩,然后对数据进行校验,或者校验和压缩两者一起使用。...网络拦截器 能够对重定向和重试等中间响应环节进行操作。 不会调用缓存的数据来结束网络。也就是说即使有缓存有会去调用Http的请求。 用来监视整个请求和返回的数据。...这通常比重写请求头更加有杀伤管力,因为可以篡改,违反了web服务器的本身返回数据的本意! 在特殊的情况 需要修复容错服务端的返回的数据,重写返回的Head是解决问题的有效方式。...处理返回拦截 使用者都知道我们每次进行一次请求调用call.execute() ,真正的response也在这里开始,拦截器也从这方法为导火索。

    1.9K20

    Retrofit解析8之核心解析——ServiceMethod及注解2

    却使用参数注解@Field,则抛出异常 if (!...return new ParameterHandler.Body(converter); } //如果上面都处理,则说明使用了一个非Retrofit的的注解,返回null...return null; // Not a Retrofit annotation. } 内容如下: 主要是根据具体的参数注解类型,然后具体处理。...如果你想动态设置url,第一个入参需要使用@Url 注解来实现。可以在方法参数里面使用@Path注解,是实现替换Url部分内容,被替换的部分需要用大括号“{}”括起来,例如"{foo}"。...默认情况下,这个方法返回一个代表HTTP请求的Call对象,里面的泛型是响应体的类型,由 Converter.Factory对象负责转化,也可以用ResponseBody代表原始数据,当然你不关心请求体

    1.5K20

    【转-干货】Retrofit2.0使用总结及注意事项

    Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,如果看源码会发现其实质上就是对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层...,其将请求返回javaBean,对网络认证 REST API进行了很好对支持此,使用Retrofit将会极大的提高我们应用的网络体验。...更多关于REST的介绍:什么是REST - GitHub讲解的非常详细 2.0与1.9使用比较 如果之前使用过Retrofit1,会发现2.0后的API会有一些变化, 比如创建方式,拦截器,错误处理,转换器等...//主要用于响应体的处理,Factory中默认实现为返回null,表示不处理 @Override public Converter返回builder是为了方便我们设置baseUrl的,我们可以动态创建多个api接口,当然也可以用@Url注解。

    6.1K30
    领券