This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site-v2
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/asf-site-v2 by this push:
     new c4128ffb22 deploy: e0b64abbce1ecc70bfb3962856598fad77e00d07
c4128ffb22 is described below

commit c4128ffb2271230df03cbee72fe799f00ec88a69
Author: AlbumenJ <[email protected]>
AuthorDate: Wed Jun 28 12:11:33 2023 +0000

    deploy: e0b64abbce1ecc70bfb3962856598fad77e00d07
---
 sitemap.xml                                        |  2 +-
 .../serialization/fastjson/index.html              | 26 +++---------------
 .../serialization/fastjson2/index.html             | 32 +++-------------------
 .../serialization/hessian/index.html               | 32 +++-------------------
 .../reference-manual/serialization/index.html      |  2 +-
 .../serialization/protobuf/index.html              | 26 +++---------------
 .../spi/description/dubbo-spi/index.html           | 24 ++++++++--------
 .../reference-manual/spi/description/index.xml     | 20 +++++++-------
 zh-cn/sitemap.xml                                  |  2 +-
 9 files changed, 41 insertions(+), 125 deletions(-)

diff --git a/sitemap.xml b/sitemap.xml
index 8ac9ace557..f5bc4cab6f 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-28T20:05:01+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-28T20:06:10+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/index.html
 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/index.html
index 747919baf9..84c0eb5159 100644
--- 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/index.html
@@ -1,24 +1,6 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180. [...]
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><meta property="og:type" content="article"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/";><meta
 property="article:section" content="overview"><meta 
property="article:modified_time" content="2023-05-09 [...]
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><meta itemprop=dateModified content="2023-05-09T10:43:48+08:00"><meta 
itemprop=wordCount content="71"><meta itemprop=keywords content><meta 
name=twitter:card content="summary"><meta name=twitter:title 
content="Fastjson"><meta name=twitter:description content="1 介绍 Fastjson 是一个 
Java 库, [...]
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><script async 
src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0";></script>
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180. [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
-<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="1 介绍 Fastjson 是一个 
Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。 Fastjson 
可以处理任意 Java 对象,包括您没有源代码的预先存在的对象。
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><meta property="og:description" content="1 介绍 Fastjson 是一个 Java 库,可用于将 Java 
对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。 Fastjson 可以处理任意 Java 
对象,包括您没有源代码的预先存在的对象。
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><meta name=twitter:description content="1 介绍 Fastjson 是一个 Java 库,可用于将 Java 
对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。 Fastjson 可以处理任意 Java 
对象,包括您没有源代码的预先存在的对象。
-2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>org.apache.dubbo.extensions</groupId> 
<artifactId>dubbo-serialization-fastjson</artifactId> <version>1.0.1</version> 
</dependency> <dependency> <groupId>com.alibaba</groupId> 
<artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> 
</dependencies> 2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: fastjson 或
-# dubbo.properties dubbo.protocol.serialization=fastjson # or 
dubbo.consumer.serialization=fastjson # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson 或
-<dubbo:protocol serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;fastjson&#34; /> 
"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/";><meta
 property="og:title" content="Fastjson"><meta name=twitter:title 
content="Fastjson"><meta name=twitter:image:alt content="Apache Dubbo"><meta 
proper [...]
+<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="本文介绍 Fastjson 
序列化"><meta property="og:description" content="本文介绍 Fastjson 序列化"><meta 
name=twitter:description content="本文介绍 Fastjson 序列化"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson/";><meta
 property="og:title" c [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
 <label for=m-zh-cnoverviewhome-check><a href=/zh-cn/overview/home/ 
title="Dubbo 文档" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewhome><span>主页</span></a></label></li><li 
class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" 
id=m-zh-cnoverviewquickstart-li><input type=checkbox 
id=m-zh-cnoverviewquickstart-check>
 <label for=m-zh-cnoverviewquickstart-check><a href=/zh-cn/overview/quickstart/ 
title="Dubbo 入门" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewquickstart><span>入门</span></a></label><ul class="ul-2 
foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section 
with-child" id=m-zh-cnoverviewquickstartjava-li><input type=checkbox 
id=m-zh-cnoverviewquickstartjava-check>
@@ -688,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;dependency&gt;</span>
 </span></span><span style=display:flex><span>      <span 
style=color:#268bd2>&lt;groupId&gt;</span>org.apache.dubbo.extensions<span 
style=color:#268bd2>&lt;/groupId&gt;</span>
 </span></span><span style=display:flex><span>      <span 
style=color:#268bd2>&lt;artifactId&gt;</span>dubbo-serialization-fastjson<span 
style=color:#268bd2>&lt;/artifactId&gt;</span>
@@ -720,7 +702,7 @@
 </span></span><span style=display:flex><span><span style=color:#586e75>&lt;!-- 
or --&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;xxx&#34;</span> serialization=<span 
style=color:#2aa198>&#34;fastjson&#34;</span> <span 
style=color:#268bd2>/&gt;</span>
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%
 [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=Fastjson"; 
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a href=#1-介绍>1 
介绍</a></li><li><a href=#2-使用方式>2 使用方式</a><ul><li><a href=#21-添加依赖>2.1 
添加依赖</a></li><li><a href=#22-配置启用>2.2 
配置启用</a></li></ul></li></ul></nav></div></div></div></div><footer 
class="bg-dark py-5 row d-print-none footer-margin-0"><div 
class="container-fluid mx-sm [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/index.html
 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/index.html
index d97ea76459..85ebed150e 100644
--- 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/index.html
@@ -1,30 +1,6 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180 [...]
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><meta 
property="og:type" content="article"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/";><meta
 property="article:section" content="overview"><meta 
property="article:modified_time" content="2023-05-09T10:43:48+08:00"><meta 
itemprop=name content="Fastjson2"><meta itemprop=description  [...]
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><meta 
itemprop=dateModified content="2023-05-09T10:43:48+08:00"><meta 
itemprop=wordCount content="81"><meta itemprop=keywords content><meta 
name=twitter:card content="summary"><meta name=twitter:title 
content="Fastjson2"><meta name=twitter:description content="1 介绍 FASTJSON 
v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><script async 
src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0";></script>
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180 [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
-<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="1 介绍 FASTJSON 
v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><meta 
property="og:description" content="1 介绍 FASTJSON 
v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><meta 
name=twitter:description content="1 介绍 FASTJSON 
v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,
-支持JSON/JSONB两种协议,JSONPath 是一等公民。 支持全量解析和部分解析。 支持Java服务端、客户端Android、大数据场景。 
支持Kotlin https://alibaba.github.io/fastjson2/kotlin_cn 支持JSON Schema 
https://alibaba.github.io/fastjson2/json_schema_cn 支持Android 8+ 支持Graal 
Native-Image 支持 JSON Schema https://alibaba.github.io/fastjson2/json_schema_cn 
2 使用方式 2.1 添加依赖 <dependencies> <dependency> 
<groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> 
<version>2.0.23</version> </dependency> </dependencies> 注:Fastjson2 序列化仅 Dubbo 
[...]
-2.2 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
fastjson2 或
-# dubbo.properties dubbo.protocol.serialization=fastjson2 # or 
dubbo.consumer.serialization=fastjson2 # or 
dubbo.reference.com.demo.DemoService.serialization=fastjson2 或
-<dubbo:protocol serialization=&#34;fastjson2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;fastjson2&#34; /> <!"><meta 
property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/";><meta
 property="og:title" content="Fastjson2"><meta name=twitter:title 
content="Fastjson2"><meta name=twitter:image:alt content="Apache Dubbo"><meta 
property="og:type" content="article"><meta name=viewport 
content="width=device-width"><s [...]
+<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="本文介绍 Fastjson2 
序列化"><meta property="og:description" content="本文介绍 Fastjson2 序列化"><meta 
name=twitter:description content="本文介绍 Fastjson2 序列化"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2/";><meta
 property="og:titl [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
 <label for=m-zh-cnoverviewhome-check><a href=/zh-cn/overview/home/ 
title="Dubbo 文档" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewhome><span>主页</span></a></label></li><li 
class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" 
id=m-zh-cnoverviewquickstart-li><input type=checkbox 
id=m-zh-cnoverviewquickstart-check>
 <label for=m-zh-cnoverviewquickstart-check><a href=/zh-cn/overview/quickstart/ 
title="Dubbo 入门" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewquickstart><span>入门</span></a></label><ul class="ul-2 
foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section 
with-child" id=m-zh-cnoverviewquickstartjava-li><input type=checkbox 
id=m-zh-cnoverviewquickstartjava-check>
@@ -694,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;dependency&gt;</span>
 </span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;groupId&gt;</span>com.alibaba.fastjson2<span 
style=color:#268bd2>&lt;/groupId&gt;</span>
 </span></span><span style=display:flex><span>        <span 
style=color:#268bd2>&lt;artifactId&gt;</span>fastjson2<span 
style=color:#268bd2>&lt;/artifactId&gt;</span>
@@ -721,7 +697,7 @@
 </span></span><span style=display:flex><span><span style=color:#586e75>&lt;!-- 
or --&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;xxx&#34;</span> serialization=<span 
style=color:#2aa198>&#34;fastjson2&#34;</span> <span 
style=color:#268bd2>/&gt;</span>
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/fastjson2.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md
 [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=Fastjson2"; 
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a href=#1-介绍>1 
介绍</a></li><li><a href=#2-使用方式>2 使用方式</a><ul><li><a href=#21-添加依赖>2.1 
添加依赖</a></li><li><a href=#22-配置启用>2.2 
配置启用</a></li></ul></li></ul></nav></div></div></div></div><footer 
class="bg-dark py-5 row d-print-none footer-margin-0"><div 
class="container-fluid mx-sm [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/index.html
 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/index.html
index fd8eea0587..ae7af6ef79 100644
--- 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/index.html
@@ -1,30 +1,6 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.p [...]
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><meta property="og:type" content="article"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/";><meta
 property="article:section" content="overview"><meta 
property="article:modified_time" content="2023-05-09T [...]
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><meta itemprop=dateModified content="2023-05-09T10:43:48+08:00"><meta 
itemprop=wordCount content="52"><meta itemprop=keywords content><meta 
name=twitter:card content="summary"><meta name=twitter:title 
content="Hessian"><meta name=twitter:description content="1 介绍 
Hessian序列化是一种支持动态类型、跨 [...]
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><script async 
src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0";></script>
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.p [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
-<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="1 介绍 
Hessian序列化是一种支持动态类型、跨语言、基于对象传输的网络协议,Java对象序列化的二进制流可以被其他语言(如,c++,python)。特性如下:
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><meta property="og:description" content="1 介绍 
Hessian序列化是一种支持动态类型、跨语言、基于对象传输的网络协议,Java对象序列化的二进制流可以被其他语言(如,c++,python)。特性如下:
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><meta name=twitter:description content="1 介绍 
Hessian序列化是一种支持动态类型、跨语言、基于对象传输的网络协议,Java对象序列化的二进制流可以被其他语言(如,c++,python)。特性如下:
-自描述序列化类型。不依赖外部描述文件或者接口定义,用一个字节表示常用的基础类型,极大缩短二进制流。 语言无关,支持脚本语言 
协议简单,比Java原生序列化高效 
相比hessian1,hessian2中增加了压缩编码,其序列化二进制流大小是Java序列化的50%,序列化耗时是Java序列化的30%,反序列化耗时是Java序列化的20%。
 2 使用方式 Dubbo < 3.2.0 版本中,默认使用 Hessian2 作为默认序列化
-2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: serialization: 
hessian2 或
-# dubbo.properties dubbo.protocol.serialization=hessian2 # or 
dubbo.consumer.serialization=hessian2 # or 
dubbo.reference.com.demo.DemoService.serialization=hessian2 或
-<dubbo:protocol serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;hessian2&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;hessian2&#34; /> 
"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/";><meta
 property="og:title" content="Hessian"><meta name=twitter:title 
content="Hessian"><meta name=twitter:image:alt content="Apache Dubbo"><meta 
property= [...]
+<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="本文介绍 Hessian 
序列化"><meta property="og:description" content="本文介绍 Hessian 序列化"><meta 
name=twitter:description content="本文介绍 Hessian 序列化"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian/";><meta
 property="og:title" conte [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
 <label for=m-zh-cnoverviewhome-check><a href=/zh-cn/overview/home/ 
title="Dubbo 文档" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewhome><span>主页</span></a></label></li><li 
class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" 
id=m-zh-cnoverviewquickstart-li><input type=checkbox 
id=m-zh-cnoverviewquickstart-check>
 <label for=m-zh-cnoverviewquickstart-check><a href=/zh-cn/overview/quickstart/ 
title="Dubbo 入门" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewquickstart><span>入门</span></a></label><ul class="ul-2 
foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section 
with-child" id=m-zh-cnoverviewquickstartjava-li><input type=checkbox 
id=m-zh-cnoverviewquickstartjava-check>
@@ -694,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>dubbo</span>:
 </span></span><span style=display:flex><span> <span 
style=color:#268bd2>protocol</span>:
 </span></span><span style=display:flex><span>   <span 
style=color:#268bd2>serialization</span>: hessian2
@@ -714,7 +690,7 @@
 </span></span><span style=display:flex><span>        <span 
style=color:#586e75>&lt;!-- or --&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;xxx&#34;</span> serialization=<span 
style=color:#2aa198>&#34;hessian2&#34;</span> <span 
style=color:#268bd2>/&gt;</span>
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/hessian.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%6
 [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=Hessian"; 
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a href=#1-介绍>1 
介绍</a></li><li><a href=#2-使用方式>2 使用方式</a><ul><li><a href=#21-配置启用>2.1 
配置启用</a></li></ul></li></ul></nav></div></div></div></div><footer 
class="bg-dark py-5 row d-print-none footer-margin-0"><div 
class="container-fluid mx-sm-5"><div class=row><div class="col-6 c [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/index.html 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/index.html
index cfdadbb948..fbb8e5f298 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/index.html
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/index.html
@@ -670,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 <button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/_index.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e5%ba%8f%e5%88%97%e5%8c%96";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/index.html
 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/index.html
index e7995fc264..0ac103cdd8 100644
--- 
a/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/index.html
@@ -1,24 +1,6 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180. [...]
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><meta property="og:type" content="article"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/";><meta
 property="article:section" content="overview"><meta 
property="article:modified_time" content="2023-05-09 [...]
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><meta itemprop=dateModified content="2023-05-09T10:43:48+08:00"><meta 
itemprop=wordCount content="43"><meta itemprop=keywords content><meta 
name=twitter:card content="summary"><meta name=twitter:title 
content="Protobuf"><meta name=twitter:description content="1 介绍 Protocol 
Buffers是一种开 [...]
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><script async 
src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0";></script>
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180. [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
-<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="1 介绍 Protocol 
Buffers是一种开源跨平台的序列化数据结构的协议。其对于存储资料或在网络上进行通信的程序是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,这些代码将用来生成或解析代表这些数据结构的字节流。
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><meta property="og:description" content="1 介绍 Protocol 
Buffers是一种开源跨平台的序列化数据结构的协议。其对于存储资料或在网络上进行通信的程序是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,这些代码将用来生成或解析代表这些数据结构的字节流。
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><meta name=twitter:description content="1 介绍 Protocol 
Buffers是一种开源跨平台的序列化数据结构的协议。其对于存储资料或在网络上进行通信的程序是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,这些代码将用来生成或解析代表这些数据结构的字节流。
-2 使用方式 2.1 配置启用 # application.yml (Spring Boot) dubbo: protocol: 
serialization: protobuf 或
-# dubbo.properties dubbo.protocol.serialization=protobuf # or 
dubbo.consumer.serialization=protobuf # or 
dubbo.reference.com.demo.DemoService.serialization=protobuf 或
-<dubbo:protocol serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:consumer serialization=&#34;protobuf&#34; /> <!-- or --> 
<dubbo:reference interface=&#34;xxx&#34; serialization=&#34;protobuf&#34; /> 
"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/";><meta
 property="og:title" content="Protobuf"><meta name=twitter:title 
content="Protobuf"><meta name=twitter:image:alt content="Apache Dubbo"><meta 
proper [...]
+<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="本文介绍 Protobuf 
序列化"><meta property="og:description" content="本文介绍 Protobuf 序列化"><meta 
name=twitter:description content="本文介绍 Protobuf 序列化"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf/";><meta
 property="og:title" c [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
 <label for=m-zh-cnoverviewhome-check><a href=/zh-cn/overview/home/ 
title="Dubbo 文档" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewhome><span>主页</span></a></label></li><li 
class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" 
id=m-zh-cnoverviewquickstart-li><input type=checkbox 
id=m-zh-cnoverviewquickstart-check>
 <label for=m-zh-cnoverviewquickstart-check><a href=/zh-cn/overview/quickstart/ 
title="Dubbo 入门" class="align-left pl-0 td-sidebar-link 
td-sidebar-link__section" 
id=m-zh-cnoverviewquickstart><span>入门</span></a></label><ul class="ul-2 
foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section 
with-child" id=m-zh-cnoverviewquickstartjava-li><input type=checkbox 
id=m-zh-cnoverviewquickstartjava-check>
@@ -688,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>dubbo</span>:
 </span></span><span style=display:flex><span> <span 
style=color:#268bd2>protocol</span>:
 </span></span><span style=display:flex><span>   <span 
style=color:#268bd2>serialization</span>: protobuf
@@ -708,7 +690,7 @@
 </span></span><span style=display:flex><span>        <span 
style=color:#586e75>&lt;!-- or --&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;xxx&#34;</span> serialization=<span 
style=color:#2aa198>&#34;protobuf&#34;</span> <span 
style=color:#268bd2>/&gt;</span>
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/protobuf.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%
 [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=Protobuf"; 
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a href=#1-介绍>1 
介绍</a></li><li><a href=#2-使用方式>2 使用方式</a><ul><li><a href=#21-配置启用>2.1 
配置启用</a></li></ul></li></ul></nav></div></div></div></div><footer 
class="bg-dark py-5 row d-print-none footer-margin-0"><div 
class="container-fluid mx-sm-5"><div class=row><div class="col-6 c [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/index.html
 
b/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/index.html
index da5f6e0969..33ce206c8d 100644
--- 
a/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x1 [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.114.1"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x1 [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="本文介绍了 Dubbo SPI 
的原理和实现细节"><meta property="og:description" content="本文介绍了 Dubbo SPI 
的原理和实现细节"><meta name=twitter:description content="本文介绍了 Dubbo SPI 
的原理和实现细节"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/";><me
 [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
@@ -670,7 +670,7 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
 Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另一种是加载自适应扩展类。这两种方式会在下面详细的介绍。
 需要特别注意的是: 在 Dubbo 中,基于 SPI 扩展加载的类是单例的。</p><h3 id=11-加载固定的扩展类>1.1 
加载固定的扩展类</h3><p>如果让你来设计加载固定扩展类,你会怎么做了?
 
一种常见思路是读取特定目录下的配置文件,然后解析出全类名,通过反射机制来实例化这个类,然后将这个类放在集合中存起来,如果有需要的时候,直接从集合中取。Dubbo
 中的实现也是这么一个思路。
@@ -755,7 +755,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>                type <span 
style=color:#719e07>+</span> <span style=color:#2aa198>&#34;) couldn&#39;t be 
instantiated: &#34;</span> <span style=color:#719e07>+</span> t<span 
style=color:#719e07>.</span>getMessage<span style=color:#719e07>(),</span> 
t<span style=color:#719e07>);</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><p>createExtension 
方法的逻辑稍复杂一下,包含了如下的步骤:</p><ol><li>通过 getExtensionClasses 
获取所有的拓展类</li><li>通过反射创建拓展对象</li><li>向拓展对象中注入依赖</li><li>将拓展对象包裹在相应的 Wrapper 
对象中</li><li>初始化拓展对象</li></ol><p>以上步骤中,第一个步骤是加载拓展类的关键,第三和第四个步骤是 Dubbo IOC 与 AOP 
的具体实现。在接下来的章节中,将会重点分析 getExtensionClasses 方法的逻辑,以及简单介绍 Dubbo IOC 的具体实现。</p><h3 
id=211-获取所有的拓展类>2.1.1 
获取所有的拓展类</h3><p>我们在通过名称获取拓展类之前,首先需要根据配置文件解析出拓展项名称到拓展类的映射关系表(Map&lt;名称, 
拓展类>),之后再根据拓展项名称从映射关系表中取出相应的拓展类即可。相关过程的代码分析如下:</p><div clas [...]
+</span></span></code></pre></div><p>createExtension 
方法的逻辑稍复杂一下,包含了如下的步骤:</p><ol><li>通过 getExtensionClasses 
获取所有的拓展类</li><li>通过反射创建拓展对象</li><li>向拓展对象中注入依赖</li><li>将拓展对象包裹在相应的 Wrapper 
对象中</li><li>初始化拓展对象</li></ol><p>以上步骤中,第一个步骤是加载拓展类的关键,第三和第四个步骤是 Dubbo IOC 与 AOP 
的具体实现。在接下来的章节中,将会重点分析 getExtensionClasses 方法的逻辑,以及简单介绍 Dubbo IOC 的具体实现。</p><h4 
id=211-获取所有的拓展类>2.1.1 
获取所有的拓展类</h4><p>我们在通过名称获取拓展类之前,首先需要根据配置文件解析出拓展项名称到拓展类的映射关系表(Map&lt;名称, 
拓展类>),之后再根据拓展项名称从映射关系表中取出相应的拓展类即可。相关过程的代码分析如下:</p><div clas [...]
 </span></span><span style=display:flex><span>    <span style=color:#586e75>// 
从缓存中获取已加载的拓展类
 </span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>    Map<span 
style=color:#719e07>&lt;</span>String<span style=color:#719e07>,</span> 
Class<span style=color:#719e07>&lt;?&gt;&gt;</span> classes <span 
style=color:#719e07>=</span> cachedClasses<span 
style=color:#719e07>.</span>get<span style=color:#719e07>();</span>
 </span></span><span style=display:flex><span>    <span style=color:#586e75>// 
双重检查
@@ -904,7 +904,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>        <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><p>如上,loadClass 方法操作了不同的缓存,比如 
cachedAdaptiveClass、cachedWrapperClasses 和 cachedNames 
等等。除此之外,该方法没有其他什么逻辑了。</p><p>到此,关于缓存类加载的过程就分析完了。整个过程没什么特别复杂的地方,大家按部就班的分析即可,不懂的地方可以调试一下。接下来,我们来聊聊
 Dubbo IOC 方面的内容。</p><h3 id=212-dubbo-ioc>2.1.2 Dubbo IOC</h3><p>Dubbo IOC 是通过 
setter 方法注入依赖。Dubbo 首先会通过反射获取到实例的所有方法,然后再遍历方法列表,检测方法名是否具有 setter 方法特征。若有,则通过 
ObjectFactory 获取依赖对象,最后通过反射调用 setter 方法将依赖设置到目标对象中。整个过程对应的代码如下:</p><div 
class=highlight><pre tabindex=0 style=color:#93a1a1 [...]
+</span></span></code></pre></div><p>如上,loadClass 方法操作了不同的缓存,比如 
cachedAdaptiveClass、cachedWrapperClasses 和 cachedNames 
等等。除此之外,该方法没有其他什么逻辑了。</p><p>到此,关于缓存类加载的过程就分析完了。整个过程没什么特别复杂的地方,大家按部就班的分析即可,不懂的地方可以调试一下。接下来,我们来聊聊
 Dubbo IOC 方面的内容。</p><h4 id=212-dubbo-ioc>2.1.2 Dubbo IOC</h4><p>Dubbo IOC 是通过 
setter 方法注入依赖。Dubbo 首先会通过反射获取到实例的所有方法,然后再遍历方法列表,检测方法名是否具有 setter 方法特征。若有,则通过 
ObjectFactory 获取依赖对象,最后通过反射调用 setter 方法将依赖设置到目标对象中。整个过程对应的代码如下:</p><div 
class=highlight><pre tabindex=0 style=color:#93a1a1 [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>if</span> <span style=color:#719e07>(</span>objectFactory 
<span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span><span 
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>        <span 
style=color:#719e07>return</span> instance<span style=color:#719e07>;</span>
@@ -1020,7 +1020,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>    <span style=color:#586e75>// 
编译代码,生成 Class
 </span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>    <span style=color:#719e07>return</span> 
compiler<span style=color:#719e07>.</span>compile<span 
style=color:#719e07>(</span>code<span style=color:#719e07>,</span> 
classLoader<span style=color:#719e07>);</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><p>createAdaptiveExtensionClass 
方法用于生成自适应拓展类,该方法首先会生成自适应拓展类的源码,然后通过 Compiler 实例(Dubbo 默认使用 javassist 
作为编译器)编译源码,得到代理类 Class 实例。接下来,我们把重点放在代理类代码生成的逻辑上,其他逻辑大家自行分析。</p><h3 
id=221-自适应拓展类代码生成>2.2.1 自适应拓展类代码生成</h3><p>AdaptiveClassCodeGenerator#generate 
方法生成扩展类代码</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><spa [...]
+</span></span></code></pre></div><p>createAdaptiveExtensionClass 
方法用于生成自适应拓展类,该方法首先会生成自适应拓展类的源码,然后通过 Compiler 实例(Dubbo 默认使用 javassist 
作为编译器)编译源码,得到代理类 Class 实例。接下来,我们把重点放在代理类代码生成的逻辑上,其他逻辑大家自行分析。</p><h4 
id=221-自适应拓展类代码生成>2.2.1 自适应拓展类代码生成</h4><p>AdaptiveClassCodeGenerator#generate 
方法生成扩展类代码</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><spa [...]
 </span></span><span style=display:flex><span>    <span style=color:#586e75>// 
如果该接口中没有方法被 @Adaptive 注解修饰,直接抛出异常
 </span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>    <span style=color:#719e07>if</span> <span 
style=color:#719e07>(!</span>hasAdaptiveMethod<span 
style=color:#719e07>())</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>        <span 
style=color:#719e07>throw</span> <span style=color:#719e07>new</span> 
IllegalStateException<span style=color:#719e07>(</span><span 
style=color:#2aa198>&#34;No adaptive method exist on extension &#34;</span> 
<span style=color:#719e07>+</span> type<span 
style=color:#719e07>.</span>getName<span style=color:#719e07>()</span> <span 
style=color:#719e07>+</span> <span style=color:#2aa198>&#34;, refuse to create 
the adaptive class!&#34;< [...]
@@ -1100,7 +1100,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 1.检查方法上是否 Adaptive 注解修饰
 2.为方法生成代码的时候,参数列表上要有 URL(或参数对象中有 URL)
 3.使用 ExtensionLoader.getExtension 获取扩展
-4.执行对应的方法</p><h3 id=223-附一个动态生成代码后的例子>2.2.3 附一个动态生成代码后的例子</h3><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#719e07>package</span> 
org.apache.dubbo.common.extension.adaptive<span style=color:#719e07>;</span>
+4.执行对应的方法</p><h4 id=223-附一个动态生成代码后的例子>2.2.3 附一个动态生成代码后的例子</h4><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#719e07>package</span> 
org.apache.dubbo.common.extension.adaptive<span style=color:#719e07>;</span>
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#719e07>import</span> 
org.apache.dubbo.common.extension.ExtensionLoader<span 
style=color:#719e07>;</span>
 </span></span><span style=display:flex><span>
@@ -1129,7 +1129,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>        <span style=color:#719e07>return</span> 
extension<span style=color:#719e07>.</span>echo<span 
style=color:#719e07>(</span>arg0<span style=color:#719e07>,</span> arg1<span 
style=color:#719e07>);</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><h2 id=3spi-扩展示例>3.SPI 扩展示例</h2><h3 
id=31--加载固定扩展类>3.1 加载固定扩展类</h3><h3 id=311-编写-spi-接口及实现类>3.1.1 编写 SPI 
接口及实现类</h3><p>不管是 Java SPI,还是 Dubbo 中实现的 SPI,都需要编写接口。不过 Dubbo 中的接口需要被 @SPI 
注解修饰。</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>@SPI</span>
+</span></span></code></pre></div><h2 id=3-dubbo-spi-扩展示例>3. Dubbo SPI 
扩展示例</h2><h3 id=31--加载固定扩展类>3.1 加载固定扩展类</h3><h4 id=311-编写-spi-接口及实现类>3.1.1 编写 
SPI 接口及实现类</h4><p>不管是 Java SPI,还是 Dubbo 中实现的 SPI,都需要编写接口。不过 Dubbo 中的接口需要被 @SPI 
注解修饰。</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>@SPI</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> 
<span style=color:#268bd2>DemoSpi</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#dc322f>void</span> <span style=color:#268bd2>say</span><span 
style=color:#719e07>();</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
@@ -1149,7 +1149,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>        optimusPrime<span 
style=color:#719e07>.</span>sayHello<span style=color:#719e07>();</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><h3 id=32-加载自适应扩展类>3.2 加载自适应扩展类</h3><p>这个以 
Protocol 为例进行说明</p><h3 id=321-protocol-接口抽取部分核心方法>3.2.1 Protocol 
接口(抽取部分核心方法)</h3><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>@SPI</span><span style=color:#719e07>(</span><span 
style=color:#2aa198>&#34;dubbo&#34;</span><span style=color:#7 [...]
+</span></span></code></pre></div><h3 id=32-加载自适应扩展类>3.2 加载自适应扩展类</h3><p>这个以 
Protocol 为例进行说明</p><h4 id=321-protocol-接口抽取部分核心方法>3.2.1 Protocol 
接口(抽取部分核心方法)</h4><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>@SPI</span><span style=color:#719e07>(</span><span 
style=color:#2aa198>&#34;dubbo&#34;</span><span style=color:#7 [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> 
<span style=color:#268bd2>Protocol</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>@Adaptive</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>&lt;</span>T<span style=color:#719e07>&gt;</span> 
Exporter<span style=color:#719e07>&lt;</span>T<span 
style=color:#719e07>&gt;</span> <span style=color:#268bd2>export</span><span 
style=color:#719e07>(</span>Invoker<span style=color:#719e07>&lt;</span>T<span 
style=color:#719e07>&gt;</span> invoker<span style=color:#719e07>)</span> <span 
style=color:#268bd2>throws</span> RpcException<span style=color:#719e07>;</span>
@@ -1171,8 +1171,8 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>        <span 
style=color:#719e07>return</span> exporter<span style=color:#719e07>;</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><h3 id=322-将实现类放在特定目录下>3.2.2 
将实现类放在特定目录下</h3><p>在 dubbo 中,该配置路径 
META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</p><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-text data-lang=text><span 
style=display:flex><span>dubbo=org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol
-</span></span></code></pre></div><p>需要说明一点的是,在 dubbo 中,并不是直接使用 DubboProtocol 
的,而是使用的是其包装类。</p><h3 id=323-使用>3.2.3 使用</h3><div class=highlight><pre 
tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span 
style=color:#268bd2>DubboAdaptiveTest</span> <span style=color:#719e07>{</span>
+</span></span></code></pre></div><h4 id=322-将实现类放在特定目录下>3.2.2 
将实现类放在特定目录下</h4><p>在 dubbo 中,该配置路径 
META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</p><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-text data-lang=text><span 
style=display:flex><span>dubbo=org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol
+</span></span></code></pre></div><p>需要说明一点的是,在 dubbo 中,并不是直接使用 DubboProtocol 
的,而是使用的是其包装类。</p><h4 id=323-使用>3.2.3 使用</h4><div class=highlight><pre 
tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span 
style=color:#268bd2>DubboAdaptiveTest</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>@Test</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span 
style=color:#268bd2>sayHello</span><span style=color:#719e07>()</span> <span 
style=color:#268bd2>throws</span> Exception <span style=color:#719e07>{</span>
@@ -1182,10 +1182,10 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e6%89%a9%e5%b1%95%e7%82%b9%e5%bc%80%e5%8f%91%e6%8c%87%e5%8d%97";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#1简介>1.简介</a><ul><li><a href=#11-加载固定的扩展类>1.1 加载固定的扩展类</a></li><li><a 
href=#12-加载自适应扩展类>1.2 加载自适应扩展类</a></li></ul></li><li><a 
href=#2-dubbo-spi-源码分析>2. Dubbo SPI 源码分析</a><ul><li><a href=#21-加载固定的扩展类>2.1 
加载固定的扩展类</a></li><li><a href=#211-获取所有的拓展类>2.1.1 获取所有的拓展类</a></li> [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#1-dubbo-spi-扩展简介>1. Dubbo SPI 扩展简介</a><ul><li><a href=#11-加载固定的扩展类>1.1 
加载固定的扩展类</a></li><li><a href=#12-加载自适应扩展类>1.2 加载自适应扩展类</a></li></ul></li><li><a 
href=#2-dubbo-spi-源码分析>2. Dubbo SPI 源码分析</a><ul><li><a href=#21-加载固定的扩展类>2.1 
加载固定的扩展类</a></li><li><a href=#22-加载自适应扩展 [...]
 <script src=/js/bootstrap.min.js 
integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy
 crossorigin=anonymous></script>
 <script 
src=/js/main.min.a4534a01940be8c082c4c0e6777b61df9884f202b61c9519352adb6d1039d5aa.js
 integrity="sha256-pFNKAZQL6MCCxMDmd3th35iE8gK2HJUZNSrbbRA51ao=" 
crossorigin=anonymous></script>
 <script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script>
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/index.xml 
b/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/index.xml
index 2930adbfc2..6f95dbe9df 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/index.xml
@@ -1743,7 +1743,7 @@
 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.qos.permission.PermissionChecker:&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-properties" data-lang="properties">&lt;span 
style="display:flex;">&lt;span>qosPermissionChecker&lt;span 
style="color:#719e07">=&lt;/span>&lt;span 
style="color:#2aa198">com.xxx.XxxPermissionChecker&lt;/span>
 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Overview:
 
扩展点开发指南</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/dubbo-spi/</guid><description>
-&lt;h2 id="1简介">1.简介&lt;/h2>
+&lt;h2 id="1-dubbo-spi-扩展简介">1. Dubbo SPI 扩展简介&lt;/h2>
 &lt;p>SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 
的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 
SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 
Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 
Dubbo 进行拓展。
 Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另一种是加载自适应扩展类。这两种方式会在下面详细的介绍。
 需要特别注意的是: 在 Dubbo 中,基于 SPI 扩展加载的类是单例的。&lt;/p>
@@ -1847,7 +1847,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;li>初始化拓展对象&lt;/li>
 &lt;/ol>
 &lt;p>以上步骤中,第一个步骤是加载拓展类的关键,第三和第四个步骤是 Dubbo IOC 与 AOP 的具体实现。在接下来的章节中,将会重点分析 
getExtensionClasses 方法的逻辑,以及简单介绍 Dubbo IOC 的具体实现。&lt;/p>
-&lt;h3 id="211-获取所有的拓展类">2.1.1 获取所有的拓展类&lt;/h3>
+&lt;h4 id="211-获取所有的拓展类">2.1.1 获取所有的拓展类&lt;/h4>
 &lt;p>我们在通过名称获取拓展类之前,首先需要根据配置文件解析出拓展项名称到拓展类的映射关系表(Map&amp;lt;名称, 
拓展类&amp;gt;),之后再根据拓展项名称从映射关系表中取出相应的拓展类即可。相关过程的代码分析如下:&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#268bd2">private&lt;/span> 
Map&lt;span style="color:#719e07">&amp;lt;&lt;/span>String&lt;span 
style="color:#719e07">,&lt;/span> Class&lt;span 
style="color:#719e07">&amp;lt;?&amp;gt;&amp;gt;&lt;/span> 
getExtensionClasses&lt;span style="color:#719e [...]
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">// 从缓存中获取已加载的拓展类
@@ -2004,7 +2004,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如上,loadClass 
方法操作了不同的缓存,比如 cachedAdaptiveClass、cachedWrapperClasses 和 cachedNames 
等等。除此之外,该方法没有其他什么逻辑了。&lt;/p>
 &lt;p>到此,关于缓存类加载的过程就分析完了。整个过程没什么特别复杂的地方,大家按部就班的分析即可,不懂的地方可以调试一下。接下来,我们来聊聊 
Dubbo IOC 方面的内容。&lt;/p>
-&lt;h3 id="212-dubbo-ioc">2.1.2 Dubbo IOC&lt;/h3>
+&lt;h4 id="212-dubbo-ioc">2.1.2 Dubbo IOC&lt;/h4>
 &lt;p>Dubbo IOC 是通过 setter 方法注入依赖。Dubbo 首先会通过反射获取到实例的所有方法,然后再遍历方法列表,检测方法名是否具有 
setter 方法特征。若有,则通过 ObjectFactory 获取依赖对象,最后通过反射调用 setter 
方法将依赖设置到目标对象中。整个过程对应的代码如下:&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#268bd2">private&lt;/span> 
T &lt;span style="color:#268bd2">injectExtension&lt;/span>&lt;span 
style="color:#719e07">(&lt;/span>T instance&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
@@ -2143,7 +2143,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span> &lt;span 
style="color:#719e07">return&lt;/span> compiler&lt;span 
style="color:#719e07">.&lt;/span>compile&lt;span 
style="color:#719e07">(&lt;/span>code&lt;span style="color:#719e07">,&lt;/span> 
classLoader&lt;span style="color:#719e07">);&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>createAdaptiveExtensionClass
 方法用于生成自适应拓展类,该方法首先会生成自适应拓展类的源码,然后通过 Compiler 实例(Dubbo 默认使用 javassist 
作为编译器)编译源码,得到代理类 Class 实例。接下来,我们把重点放在代理类代码生成的逻辑上,其他逻辑大家自行分析。&lt;/p>
-&lt;h3 id="221-自适应拓展类代码生成">2.2.1 自适应拓展类代码生成&lt;/h3>
+&lt;h4 id="221-自适应拓展类代码生成">2.2.1 自适应拓展类代码生成&lt;/h4>
 &lt;p>AdaptiveClassCodeGenerator#generate 方法生成扩展类代码&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> 
String &lt;span style="color:#268bd2">generate&lt;/span>&lt;span 
style="color:#719e07">()&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#586e75">// 如果该接口中没有方法被 @Adaptive 注解修饰,直接抛出异常
@@ -2229,7 +2229,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 2.为方法生成代码的时候,参数列表上要有 URL(或参数对象中有 URL)
 3.使用 ExtensionLoader.getExtension 获取扩展
 4.执行对应的方法&lt;/p>
-&lt;h3 id="223-附一个动态生成代码后的例子">2.2.3 附一个动态生成代码后的例子&lt;/h3>
+&lt;h4 id="223-附一个动态生成代码后的例子">2.2.3 附一个动态生成代码后的例子&lt;/h4>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> 
org.apache.dubbo.common.extension.adaptive&lt;span 
style="color:#719e07">;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">import&lt;/span> 
org.apache.dubbo.common.extension.ExtensionLoader&lt;span 
style="color:#719e07">;&lt;/span>
@@ -2259,9 +2259,9 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#586e75">&lt;/span> &lt;span 
style="color:#719e07">return&lt;/span> extension&lt;span 
style="color:#719e07">.&lt;/span>echo&lt;span 
style="color:#719e07">(&lt;/span>arg0&lt;span style="color:#719e07">,&lt;/span> 
arg1&lt;span style="color:#719e07">);&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3spi-扩展示例">3.SPI 
扩展示例&lt;/h2>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 
id="3-dubbo-spi-扩展示例">3. Dubbo SPI 扩展示例&lt;/h2>
 &lt;h3 id="31--加载固定扩展类">3.1 加载固定扩展类&lt;/h3>
-&lt;h3 id="311-编写-spi-接口及实现类">3.1.1 编写 SPI 接口及实现类&lt;/h3>
+&lt;h4 id="311-编写-spi-接口及实现类">3.1.1 编写 SPI 接口及实现类&lt;/h4>
 &lt;p>不管是 Java SPI,还是 Dubbo 中实现的 SPI,都需要编写接口。不过 Dubbo 中的接口需要被 @SPI 注解修饰。&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#268bd2">@SPI&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">public&lt;/span> &lt;span 
style="color:#268bd2">interface&lt;/span> &lt;span 
style="color:#268bd2">DemoSpi&lt;/span> &lt;span 
style="color:#719e07">{&lt;/span>
@@ -2288,7 +2288,7 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="32-加载自适应扩展类">3.2 
加载自适应扩展类&lt;/h3>
 &lt;p>这个以 Protocol 为例进行说明&lt;/p>
-&lt;h3 id="321-protocol-接口抽取部分核心方法">3.2.1 Protocol 接口(抽取部分核心方法)&lt;/h3>
+&lt;h4 id="321-protocol-接口抽取部分核心方法">3.2.1 Protocol 接口(抽取部分核心方法)&lt;/h4>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">@SPI&lt;/span>&lt;span 
style="color:#719e07">(&lt;/span>&lt;span 
style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>&lt;span 
style="color:#719e07">)&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">public&lt;/span> &lt;span 
style="color:#268bd2">interface&lt;/span> &lt;span 
style="color:#268bd2">Protocol&lt;/span> &lt;span 
style="color:#719e07">{&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">@Adaptive&lt;/span>
@@ -2311,11 +2311,11 @@ Dubbo 中,SPI 主要有两种用法,一种是加载固定的扩展类,另
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">return&lt;/span> exporter&lt;span 
style="color:#719e07">;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#719e07">}&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">}&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 
id="322-将实现类放在特定目录下">3.2.2 将实现类放在特定目录下&lt;/h3>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 
id="322-将实现类放在特定目录下">3.2.2 将实现类放在特定目录下&lt;/h4>
 &lt;p>在 dubbo 中,该配置路径 
META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-text" data-lang="text">&lt;span 
style="display:flex;">&lt;span>dubbo=org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>需要说明一点的是,在 dubbo 
中,并不是直接使用 DubboProtocol 的,而是使用的是其包装类。&lt;/p>
-&lt;h3 id="323-使用">3.2.3 使用&lt;/h3>
+&lt;h4 id="323-使用">3.2.3 使用&lt;/h4>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> 
&lt;span style="color:#268bd2">class&lt;/span> &lt;span 
style="color:#268bd2">DubboAdaptiveTest&lt;/span> &lt;span 
style="color:#719e07">{&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">@Test&lt;/span>
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index b48dfdb459..44799b2d9e 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://dubbo.apache.org/zh-cn/overview/mannual/jav
 [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://dubbo.apache.org/zh-cn/overview/mannual/jav
 [...]
\ No newline at end of file

Reply via email to