spring-others
Null-safety
spring在org.springframework.lang包中提供以下注解聲明null相關(guān)API和字段
- @Nullable: 指示參數(shù),返回值,字段可為null.
- @NonNull:指示參數(shù),返回值,字段不可為null 。
- @NonNullApi: 指示參數(shù),返回值不可為null 。
- @NonNullFields: 指示字段不可為null .
不支持泛型參數(shù),可變長(zhǎng)度參數(shù),數(shù)組元素。
Data Buffers and Codecs
Java NIO提供了ByteBuffer,但是很多l(xiāng)ib創(chuàng)造了他們自己的Buffer API,尤其是在網(wǎng)絡(luò)操作中,當(dāng)重用buffer或者direct buffer有利于性能提升時(shí)。例如Netty的ByteBuf,Jetty使用pooled byte buffers。spring-core模塊提供了一組使用byte buffer的抽象API:
- DataBufferFactory:抽象buffer的創(chuàng)建.
- DataBuffer:表示一個(gè)pooled byte buffer
- DataBufferUtils:提供data buffers的方法.
- Codecs:加解密.
DataBufferFactory
DataBufferFactory創(chuàng)建data buffers的方式:
- 分配一個(gè)新的buffer,可以指定大小,可擴(kuò)容,收縮。
- 包裝一個(gè)存在的byte[],java.nio.ByteBuffer。
注意:
WebFlux應(yīng)用沒(méi)有直接創(chuàng)建DataBufferFactory,而是通過(guò)ServerHttpResponse或ClientHttpRequest創(chuàng)建。工廠類型依賴底層實(shí)現(xiàn),例如Netty使用NettyDataBufferFactory,其他使用DefaultDataBufferFactory。
DataBuffer
DataBuffer接口提供了java.nio.ByteBuffer相似的功能,但是做了一些增強(qiáng)。
- 不依賴position的讀寫(xiě),例如讀寫(xiě)切換不依賴flip。
- 擴(kuò)容
- pooled buffer,引用計(jì)數(shù),
- 視圖
- 下標(biāo)
PooledDataBuffer
DataBufferUtils
Codecs
?
總結(jié)
以上是生活随笔為你收集整理的spring-others的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Cloud依赖
- 下一篇: spring-DAO