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

albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/master by this push:
     new fe6d32ac71 Add spring quick start (#2135)
fe6d32ac71 is described below

commit fe6d32ac712f477402f576cb0141b98e83cc51d8
Author: Albumen Kevin <[email protected]>
AuthorDate: Thu Feb 9 08:44:24 2023 +0800

    Add spring quick start (#2135)
    
    * Add spring quick start
    
    * Fix link
---
 .../docs3-v2/java-sdk/quick-start/spring-boot.md   | 650 ++++++++++++++++++---
 .../en/docs3-v2/java-sdk/quick-start/spring-xml.md | 393 +++++++++++++
 content/zh/docs3-v2/java-sdk/quick-start/brief.md  |   2 +-
 .../docs3-v2/java-sdk/quick-start/spring-boot.md   | 588 +++++++++++++++----
 .../zh/docs3-v2/java-sdk/quick-start/spring-xml.md | 393 +++++++++++++
 .../quickstart/2023-02-08-15-27-31-image.png       | Bin 0 -> 399374 bytes
 .../quickstart/2023-02-08-15-32-16-image.png       | Bin 0 -> 411532 bytes
 .../quickstart/2023-02-08-15-33-20-image.png       | Bin 0 -> 112228 bytes
 .../quickstart/2023-02-08-15-36-31-image.png       | Bin 0 -> 1228611 bytes
 .../quickstart/2023-02-08-15-36-57-image.png       | Bin 0 -> 156644 bytes
 .../quickstart/2023-02-08-15-37-31-image.png       | Bin 0 -> 215500 bytes
 .../quickstart/2023-02-08-15-38-04-image.png       | Bin 0 -> 375707 bytes
 .../quickstart/2023-02-08-15-40-07-image.png       | Bin 0 -> 593359 bytes
 .../quickstart/2023-02-08-15-40-59-image.png       | Bin 0 -> 642919 bytes
 .../quickstart/2023-02-08-15-46-49-image.png       | Bin 0 -> 609449 bytes
 .../quickstart/2023-02-08-15-48-21-image.png       | Bin 0 -> 683655 bytes
 .../quickstart/2023-02-08-15-48-26-image.png       | Bin 0 -> 683655 bytes
 .../quickstart/2023-02-08-16-01-29-image.png       | Bin 0 -> 1218207 bytes
 .../quickstart/2023-02-08-16-02-43-image.png       | Bin 0 -> 1231647 bytes
 .../quickstart/2023-02-08-16-02-50-image.png       | Bin 0 -> 1231647 bytes
 .../quickstart/2023-02-08-17-25-27-image.png       | Bin 0 -> 779106 bytes
 .../quickstart/2023-02-08-17-26-57-image.png       | Bin 0 -> 835041 bytes
 .../quickstart/2023-02-08-17-27-17-image.png       | Bin 0 -> 826139 bytes
 .../quickstart/2023-02-08-17-27-41-image.png       | Bin 0 -> 836383 bytes
 .../quickstart/2023-02-08-17-27-45-image.png       | Bin 0 -> 836383 bytes
 .../quickstart/2023-02-08-17-28-26-image.png       | Bin 0 -> 834285 bytes
 .../quickstart/2023-02-08-17-32-50-image.png       | Bin 0 -> 501824 bytes
 .../quickstart/2023-02-08-17-52-53-image.png       | Bin 0 -> 1939385 bytes
 .../quickstart/2023-02-08-17-53-18-image.png       | Bin 0 -> 2125409 bytes
 .../quickstart/2023-02-08-17-57-29-image.png       | Bin 0 -> 841756 bytes
 .../quickstart/2023-02-08-17-59-46-image.png       | Bin 0 -> 1284822 bytes
 .../quickstart/2023-02-08-18-00-24-image.png       | Bin 0 -> 1235977 bytes
 .../quickstart/2023-02-08-18-01-03-image.png       | Bin 0 -> 949507 bytes
 .../quickstart/2023-02-08-18-01-38-image.png       | Bin 0 -> 1424280 bytes
 .../quickstart/2023-02-08-18-02-11-image.png       | Bin 0 -> 1374639 bytes
 .../quickstart/2023-02-08-18-02-33-image.png       | Bin 0 -> 1984603 bytes
 .../quickstart/2023-02-08-18-03-59-image.png       | Bin 0 -> 2713266 bytes
 .../quickstart/2023-02-08-18-05-02-image.png       | Bin 0 -> 2578824 bytes
 38 files changed, 1818 insertions(+), 208 deletions(-)

diff --git a/content/en/docs3-v2/java-sdk/quick-start/spring-boot.md 
b/content/en/docs3-v2/java-sdk/quick-start/spring-boot.md
old mode 100755
new mode 100644
index 7dd544448f..01e8aa9ae7
--- a/content/en/docs3-v2/java-sdk/quick-start/spring-boot.md
+++ b/content/en/docs3-v2/java-sdk/quick-start/spring-boot.md
@@ -1,93 +1,465 @@
 ---
 type: docs
-title: "Spring Boot Development Services"
-linkTitle: "Spring Boot"
-weight: 10
-description: "The sample demonstrates how to use Spring Boot to quickly 
develop Dubbo applications."
+title: "3 - Dubbo x Spring Boot to develop microservice applications"
+linkTitle: "Dubbo x Spring Boot to develop microservice applications"
+weight: 3
+description: "This article will demonstrate how to quickly develop 
microservice applications through Dubbo x Spring Boot based on Dubbo Samples."
 ---
 
-> Dubbo also provides a variety of startup and access including 
[XML](../../reference-manual/config/xml), 
[API](../../reference-manual/config/api) For more development methods and 
configuration details, please refer to [Configuration 
Manual](../../reference-manual/config/).
+## Target
+
+Start from scratch to develop microservices based on Dubbo x Spring Boot, and 
understand the configuration method of Dubbo x Spring Boot.
+
+## Difficulty
+
+Low
+
+## Environmental requirements
+
+- System: Windows, Linux, MacOS
+
+- JDK 8 and above (JDK17 is recommended)
+
+- Git
+
+- IntelliJ IDEA (optional)
+
+- Docker (optional)
+
+## Project Introduction
+
+In this task, it will be divided into three sub-modules for independent 
development, simulating the deployment architecture in the production 
environment.
+
 
-## Download sample code
-The complete sample code is in 
[dubbo-samples](https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot).
 
-1. Download the source code
-```shell script
-git clone -b master https://github.com/apache/dubbo-samples.git
 ```
-2. Enter the example directory
-```shell script
-cd dubbo-samples/1-basic/dubbo-samples-spring-boot
-ls # view directory structure
+.//apache/dubbo-samples/1-basic/dubbo-samples-spring-boot
+├── dubbo-samples-spring-boot-interface // shared API module
+├── dubbo-samples-spring-boot-consumer // consumer module
+└── dubbo-samples-spring-boot-provider // server module
 ```
 
-## Quick run example
 
-1. Compile Provider
-   Execute the maven command in the dubbo-samples-spring-boot directory
-```shell script
-mvn clean package
+
+As shown above, there are 3 modules in total, among which the `interface` 
module is jointly dependent by the `consumer` and `provider` modules, and 
stores the API interface used by RPC communication.
+
+
+
 ```
+.//apache/dubbo-samples/1-basic/dubbo-samples-spring-boot
+├── dubbo-samples-spring-boot-interface // shared API module
+│ ├── pom.xml
+│ └── src
+│ └── main
+│ └── java
+│ └── org
+│ └── apache
+│ └── dubbo
+│ └── springboot
+│ └── demo
+│ └── DemoService.java // API interface
+├── dubbo-samples-spring-boot-consumer // consumer module
+│ ├── pom.xml
+│ └── src
+│ ├── main
+│ │ ├── java
+│ │ │ └── org
+│ │ │ └── apache
+│ │ │ └── dubbo
+│ │ │ └── springboot
+│ │ │ └── demo
+│ │ │ └── consumer
+│ │ │ ├── ConsumerApplication.java // consumer startup class
+│ │ │ └── Task.java // The consumer simulates calling tasks
+│ │ └── resources
+│ │ └── application.yml // Spring Boot configuration file
+├── dubbo-samples-spring-boot-provider // server module
+│ ├── pom.xml
+│ └── src
+│ └── main
+│ ├── java
+│ │ └── org
+│ │ └── apache
+│ │ └── dubbo
+│ │ └── springboot
+│ │ └── demo
+│ │ └── provider
+│ │ ├── DemoServiceImpl.java // server implementation class
+│ │ └── ProviderApplication.java // server startup class
+│ └── resources
+│ └── application.yml // Spring Boot configuration file
+└── pom.xml
+```
+
+
+
+The above is the file structure of the project that will be used in this 
tutorial.
+
+
+
+## Rapid deployment (directly started based on Samples)
+
+This chapter will teach you step by step how to deploy and run a Dubbo x 
Spring Boot-based use case through a few simple commands.
 
-2. Run Provider
-   Enter the dubbo-samples-spring-boot-provider/target directory and start the 
java process
-```shell script
-cd ./dubbo-samples-spring-boot-provider
-java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
+Note: The details of the code deployed in this chapter can be found in 
`1-basic/dubbo-samples-spring-boot` in the repository of 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples), It will also 
be explained in the next chapter.
+
+### 1. Get the test project
+
+Before starting the whole tutorial, we need to get the code of the test 
project. All test case codes of Dubbo are stored in the repository 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples), the following 
command can help you get all the codes in the Samples repository.
+
+```bash
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
 ```
 
-3. Run the consumer
-   Enter the dubbo-samples-spring-boot-consumer directory and start the java 
process
-```shell script
-java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
+### 2. Start a simple registration center
+
+For a microservice application, the registry is an indispensable component. 
Only through the registration center, the consumer can successfully discover 
the address information of the server, and then make a call.
+
+To make this tutorial easier to use, we provide a simple starter based on the 
Apache Zookeeper registry. If you need to deploy the registry in a production 
environment, please refer to [Production Environment Initialization](/) to 
deploy a highly available registry.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
 ```
 
-4. View the results
-   The following information will be output on the consumer side:
+
+
+### 3. Local packaging API module
+
+In order to successfully compile the server and consumer modules, you need to 
package and install the `dubbo-samples-spring-boot-interface` module locally 
first.
+
+```bash
+./mvnw clean install -pl 1-basic/dubbo-samples-spring-boot
+./mvnw clean install -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-interface
 ```
-result: hello world
+
+
+
+### 4. Start the service provider
+
+After starting the registry, the next step is to start a service provider that 
provides services externally. Corresponding samples are also provided in 
dubbo-samples, which can be quickly pulled up by the following command.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.provider 
.ProviderApplication"
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.provider.ProviderApplication 
"
+
+Note: You need to open an independent terminal to run, and the command will 
keep executing.
 ```
-On the provider side, the following information will be output:
+
+After executing the above command, wait for a while for the following log to 
appear (`Current Spring Boot Application is await`), which means that the 
service provider has started, indicating that the service provider can provide 
services externally.
+
+``` log
+2023-02-08 17:13:00.357 INFO 80600 --- [lication.main()] 
o.a.d.c.d.DefaultApplicationDeployer : [DUBBO] Dubbo 
Application[1.1](dubbo-springboot-demo-provider) is ready., dubbo version: 3.2 
.0-beta.4, current host: 30.221.128.96
+2023-02-08 17:13:00.369 INFO 80600 --- [lication.main()] 
o.a.d.s.d.provider.ProviderApplication : Started ProviderApplication in 9.114 
seconds (JVM running for 26.522)
+2023-02-08 17:13:00.387 INFO 80600 --- 
[pool-1-thread-1].b.c.e.AwaitingNonWebApplicationListener : [Dubbo] Current 
Spring Boot Application is await...
 ```
-Hello World, request from consumer: xxx.xxx.xxx.xxx
+
+### 5. Start service consumer
+
+The last step is to start a service consumer to call the service provider, 
which is the core of the RPC call, providing a bridge for the service consumer 
to call the service provider.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-consumer 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.consumer 
.ConsumerApplication"
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-consumer 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.consumer.ConsumerApplication 
"
+
+
+```
+
+
+
+After executing the above command, wait for a while for the following log 
(`Hello world`) to appear. The printed data is returned after the service 
provider processes it, marking the success of a service call.
+
+
+
+``` log
+2023-02-08 17:14:33.045 INFO 80740 --- [lication.main()] 
o.a.d.s.d.consumer.ConsumerApplication : Started ConsumerApplication in 11.052 
seconds (JVM running for 31.62)
+Receive result ======> Hello world
+2023-02-08 17:14:33.146 INFO 80740 --- 
[pool-1-thread-1].b.c.e.AwaitingNonWebApplicationListener : [Dubbo] Current 
Spring Boot Application is await...
+Wed Feb 08 17:14:34 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:35 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:36 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:37 CST 2023 Receive result ======> Hello world
+```
+
+
+
+## Hands-on practice (from zero code development version)
+
+This chapter will teach you how to develop a microservice application from 
scratch through step-by-step tutorials.
+
+
+
+### 1. Start the registration center
+
+For a microservice application, the registry is an indispensable component. 
Only through the registration center, the consumer can successfully discover 
the address information of the server, and then make a call.
+
+To make this tutorial easier to use, we provide a simple starter based on the 
Apache Zookeeper registry. If you need to deploy the registry in a production 
environment, please refer to [Production Environment Initialization](/) to 
deploy a highly available registry.
+
+```bash
+Windows:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 2. Initialize the project
+
+Starting from this section, the project will be built and tested based on 
IntelliJ IDEA.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-25-27-image.png)
+
+As shown above, a basic project can be built.
+
+
+
+After building the basic project, we need to create three submodules 
`dubbo-spring-boot-demo-interface`, `dubbo-spring-boot-demo-provider` and 
`dubbo-spring-boot-demo-consumer`.
+
+
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-17-image.png)
+
+
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-26-57-image.png)
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-45-image.png)
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-28-26-image.png)
+
+
+
+After creating the three submodules, you need to create the following folders:
+
+1. Create `org.apache.dubbo.springboot.demo.consumer` package under 
`dubbo-spring-boot-demo-consumer/src/main/java`
+
+2. Create `org.apache.dubbo.springboot.demo` package under 
`dubbo-spring-boot-demo-interface/src/main/java`
+
+3. Create `org.apache.dubbo.springboot.demo.provider` package under 
`dubbo-spring-boot-demo-provider/src/main/java`
+
+
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-32-50-image.png)
+
+
+
+The final folder reference is shown in the image above.
+
+
+
+### 3. Add Maven dependencies
+
+
+
+After initializing the project, we need to add Dubbo-related maven 
dependencies first.
+
+
+
+For multi-module projects, you first need to configure dependency information 
in `pom.xml` of the parent project.
+
+
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-53-18-image.png)
+
+
+
+Edit the `./pom.xml` file and add the following configuration.
+
+
+
+```xml
+    <properties>
+        <dubbo.version>3.2.0-beta.4</dubbo.version>
+        <spring-boot.version>2.7.8</spring-boot.version>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Spring Boot -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- Dubbo -->
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-bom</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+
+    <build>
+        <plugin Management>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+```
+
+
+
+Then configure specific dependencies in the two modules `pom.xml` of 
`dubbo-spring-boot-consumer` and `dubbo-spring-boot-provider`.
+
+
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-52-53-image.png)
+
+
+
+Edit `./dubbo-spring-boot-consumer/pom.xml` and 
`./dubbo-spring-boot-provider/pom.xml` and add the following configurations.
+
+
+
+```xml
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-spring-boot-interface</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+
+        <!-- dubbo -->
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
+            <type>pom</type>
+            <exclusions>
+                <exclusion>
+                    <artifactId>slf4j-reload4j</artifactId>
+                    <groupId>org.slf4j</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- spring boot starter -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+    </dependencies>
 ```
 
-So far, the basic functions of Dubbo have been realized, and more development 
can be carried out on the basis of Dubbo.
 
-## Example core process
 
-For a more detailed interpretation of the examples, please refer to 
[Annotation Configuration](../../reference-manual/config/annotation/)
+In this configuration, the dependencies of dubbo and zookeeper (and the 
corresponding connector curator) are defined.
+
+After adding the above configuration, you can refresh dependencies through 
IDEA's `Maven - Reload All Maven Projects`.
+
+
 
-### 1. Define service interface
+### 4. Define service interface
 
-dubbo-samples-spring-boot-interface/DemoService.java
+The service interface is a bridge between the consumer and the server in Dubbo.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-57-29-image.png)
+
+Create `DemoService` interface under `org.apache.dubbo.samples.api` of 
`dubbo-spring-boot-demo-interface` module, defined as follows:
 
 ```java
-package org.apache.dubbo.samples.basic.api;
+package org.apache.dubbo.springboot.demo;
 
 public interface DemoService {
+
     String sayHello(String name);
 }
 ```
 
-### 2. The provider implements the interface and exposes the service
+In `GreetingsService`, the `sayHi` method is defined. Subsequent services 
published by the server and services subscribed by the consumer are all 
developed around the `GreetingsService` interface.
+
+
+
+### 5. Define the implementation of the server
+
+After defining the service interface, you can define the corresponding 
implementation on the server side. Compared with the consumer side, this part 
of the implementation is a remote implementation, and there is no relevant 
information locally.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-59-46-image.png)
+
+Create `DemoServiceImpl` class under `org.apache.dubbo.samples.provider` of 
`dubbo-spring-boot-demo-provider` module, defined as follows:
+
 
-dubbo-samples-spring-boot-provider/DemoServiceImpl.java
 
 ```java
+package org.apache.dubbo.springboot.demo.provider;
+
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.springboot.demo.DemoService;
+
 @DubboService
 public class DemoServiceImpl implements DemoService {
+
     @Override
     public String sayHello(String name) {
-        System.out.println("Hello " + name + ", request from consumer: " + 
RpcContext.getContext().getRemoteAddress());
         return "Hello " + name;
     }
 }
 ```
 
-### 3. Configure the application.yml file
+In `DemoServiceImpl`, implement `DemoService` interface, return `Hello name` 
for `sayHello` method.
+
+
+
+Note: The `@DubboService` annotation is added to the `DemoServiceImpl` class. 
Through this configuration, the Dubbo service can be published based on Spring 
Boot.
 
-dubbo-samples-spring-boot-provider/resources/application.yml
+
+
+### 6. Configure the server-side Yaml configuration file
+
+From this step to step 7, some basic information of Dubbo will be configured 
through Spring Boot.
+
+
+
+First, let's create a configuration file for the server.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-00-24-image.png)
+
+Create `application.yml` file under `resources` resource folder of 
`dubbo-spring-boot-demo-provider` module, defined as follows:
 
 ```yaml
 dubbo:
@@ -97,87 +469,175 @@ dubbo:
     name: dubbo
     port: -1
   registry:
-    id: zk-registry
-    address: zookeeper://127.0.0.1:2181
-  config-center:
-    address: zookeeper://127.0.0.1:2181
-  metadata-report:
-    address: zookeeper://127.0.0.1:2181
+    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
 ```
 
-### 4. Define Spring Boot main function
+In this configuration file, the Dubbo application name, Dubbo protocol 
information, and the registration center address used by Dubbo are defined.
+
+
+
+### 7. Configure the consumer XML configuration file
+
+Similarly, we need to create a configuration file for the consumer.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-03-image.png)
+
+Create `application.yml` file under `resources` resource folder of 
`dubbo-spring-boot-demo-consumer` module, defined as follows:
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-consumer
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
+```
+
+In this configuration file, the Dubbo application name, Dubbo protocol 
information, and the registration center address used by Dubbo are defined.
+
+
+
+### 8. Configure the server startup class based on Spring
+
+In addition to configuring the Yaml configuration file, we also need to create 
a Spring Boot-based startup class.
+
+First of all, we first create the startup class of the server.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-38-image.png)
 
-dubbo-samples-spring-boot-provider/ProviderApplication.java
+Create `Application` class under `org.apache.dubbo.springboot.demo.provider` 
of `dubbo-spring-boot-demo-provider` module, defined as follows:
 
 ```java
+package org.apache.dubbo.springboot.demo.provider;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
 @SpringBootApplication
 @EnableDubbo
 public class ProviderApplication {
-    public static void main(String[] args) throws Exception {
-        new Embedded ZooKeeper(2181, false).start();
-
+    public static void main(String[] args) {
         SpringApplication.run(ProviderApplication.class, args);
-        System.out.println("dubbo service started");
-        new CountDownLatch(1). await();
     }
 }
+
 ```
-Among them, `@EnableDubbo` must be configured.
 
-### 5. Reference remote service
+In this startup class, a `ProviderApplication` is configured to read the 
`application.yml` configuration file defined in step 6 above and start the 
application.
+
+
+
+### 9. Configure consumer startup classes based on Spring
 
-dubbo-samples-spring-boot-consumer/ConsumerApplication.java
+Similarly, we need to create a startup class for the consumer.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-11-image.png)
+
+Create `Application` class under `org.apache.dubbo.springboot.demo.consumer` 
of `dubbo-spring-boot-demo-consumer` module, defined as follows:
 
 ```java
+package org.apache.dubbo.springboot.demo.consumer;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@EnableDubbo
 public class ConsumerApplication {
-    @DubboReference
-    private DemoService demoService;
+
+    public static void main(String[] args) {
+        SpringApplication.run(ConsumerApplication.class, args);
+    }
 }
+
 ```
 
-### 6. Define application.yml
+In this startup class, a `ConsumerApplication` is configured to read the 
`application.yml` configuration file defined in step 7 above and start the 
application.
 
-dubbo-samples-spring-boot-consumer/application.yml
 
-```yaml
-dubbo:
-  application:
-    name: dubbo-springboot-demo-consumer
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    id: zk-registry
-    address: zookeeper://127.0.0.1:2181
-  config-center:
-    address: zookeeper://127.0.0.1:2181
-  metadata-report:
-    address: zookeeper://127.0.0.1:2181
-```
 
-### 7. Load Spring configuration and call remote service
+### 10. Configure consumer request tasks
+
+In addition to configuring the startup class of the consumer side, we can also 
create it based on `CommandLineRunner` in Spring Boot mode
+
 
-dubbo-samples-spring-boot-consumer/ConsumerApplication.java
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-33-image.png)
+
+Create a `Task` class under `org.apache.dubbo.springboot.demo.consumer` of 
`dubbo-spring-boot-demo-consumer` module, defined as follows:
 
 ```java
-@SpringBootApplication
-@Service
-@EnableDubbo
-public class ConsumerApplication {
+package org.apache.dubbo.springboot.demo.consumer;
+
+import java.util.Date;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.springboot.demo.DemoService;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Task implements CommandLineRunner {
     @DubboReference
     private DemoService demoService;
-    
-    public String doSayHello(String name) {
-        return demoService.sayHello(name);
-    }
 
-    public static void main(String[] args) {
-        ConfigurableApplicationContext context = 
SpringApplication.run(ConsumerApplication.class, args);
-        ConsumerApplication application = context. 
getBean(ConsumerApplication. class);
-        String result = application. doSayHello("world");
-        System.out.println("result: " + result);
+    @Override
+    public void run(String... args) throws Exception {
+        String result = demoService. sayHello("world");
+        System.out.println("Receive result ======> " + result);
+
+        new Thread(()-> {
+            while (true) {
+                try {
+                    Thread. sleep(1000);
+                    System.out.println(new Date() + " Receive result ======> " 
+ demoService.sayHello("world"));
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Thread. currentThread(). interrupt();
+                }
+            }
+        }).start();
     }
 }
+
 ```
 
-Among them, `@EnableDubbo` must be configured.
\ No newline at end of file
+
+
+In the `Task` class, an RPC subscription is obtained from Dubbo through 
`@DubboReference`, and this `demoService` can be called directly like a local 
call. A thread is created for the call in the `run` method.
+
+
+
+### 11. Start the application
+
+As of step 10, the code has been developed, and this section will start the 
entire project and verify it.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-03-59-image.png)
+
+The first is to start `org.apache.dubbo.samples.provider.Application`, wait 
for a while to appear the log as shown in the figure below (`Current Spring 
Boot Application is await`), which means that the service provider has started, 
marking that the service provides can provide services externally.
+
+``` log
+[Dubbo] Current Spring Boot Application is await...
+```
+
+Then start `org.apache.dubbo.samples.client.Application`, and wait for a while 
to see the log (`Hello world`) as shown in the figure below, which means that 
the service consumer is started and the call to the server is successfully 
obtained.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-05-02-image.png)
+
+``` log
+Receive result ======> Hello world
+```
+
+## Further reading
+
+### 1. Dubbo's Spring configuration introduction
+
+The main configuration entries of Dubbo include yaml configuration content, 
`@DubboReference` and `@DubboService`, etc. For more details, please refer to 
[Annotation Configuration | Apache 
Dubbo](/zh/docs3-v2/java-sdk/reference-manual /config/annotation/) article.
+
+## More
+
+This tutorial introduces how to develop a microservice application based on 
Dubbo x Spring Boot. In the next section, another Dubbo configuration method - 
Dubbo x Spring XML will be introduced.
\ No newline at end of file
diff --git a/content/en/docs3-v2/java-sdk/quick-start/spring-xml.md 
b/content/en/docs3-v2/java-sdk/quick-start/spring-xml.md
new file mode 100644
index 0000000000..5f339bbeea
--- /dev/null
+++ b/content/en/docs3-v2/java-sdk/quick-start/spring-xml.md
@@ -0,0 +1,393 @@
+---
+type: docs
+title: "4 - Dubbo x Spring XML to develop microservice applications"
+linkTitle: "Dubbo x Spring XML to develop microservice applications"
+weight: 4
+description: "This article will demonstrate how to quickly develop 
microservice applications through Dubbo x Spring XML based on Dubbo Samples."
+---
+
+## Target
+
+Develop Dubbo x Spring XML-based microservice development from scratch, and 
understand the Dubbo x Spring XML configuration method.
+
+## Difficulty
+
+Low
+
+## Environmental requirements
+
+- System: Windows, Linux, MacOS
+
+- JDK 8 and above (JDK17 is recommended)
+
+- Git
+
+- IntelliJ IDEA (optional)
+
+- Docker (optional)
+
+## Rapid deployment (directly started based on Samples)
+
+This chapter will teach you step by step how to deploy and run a Dubbo x 
Spring XML-based use case through a few simple commands.
+
+Note: The details of the code deployed in this chapter can be found in 
`1-basic/dubbo-samples-spring-xml` in the repository of 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples), It will also 
be explained in the next chapter.
+
+### 1. Get the test project
+
+Before starting the whole tutorial, we need to get the code of the test 
project. All test case codes of Dubbo are stored in the repository 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples), the following 
command can help you get all the codes in the Samples repository.
+
+```bash
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+```
+
+### 2. Start a simple registration center
+
+For a microservice application, the registry is an indispensable component. 
Only through the registration center, the consumer can successfully discover 
the address information of the server, and then make a call.
+
+To make this tutorial easier to use, we provide a simple starter based on the 
Apache Zookeeper registry. If you need to deploy the registry in a production 
environment, please refer to [Production Environment Initialization](/) to 
deploy a highly available registry.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 3. Start the service provider
+
+After starting the registry, the next step is to start a service provider that 
provides services externally. Corresponding samples are also provided in 
dubbo-samples, which can be quickly pulled up by the following command.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.provider.Application"
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.provider.Application"
+
+Note: You need to open an independent terminal to run, and the command will 
keep executing.
+```
+
+After executing the above command, wait for a while for the following log to 
appear (`Dubbo Application[1.1](demo-provider) is ready.`), which means that 
the service provider has started, indicating that the service provider can 
provide served.
+
+``` log
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main() INFO 
metadata.ConfigurableMetadataServiceExporter: [DUBBO] The MetadataService 
exports urls : [dubbo://30.221. 
128.96:20880/org.apache.dubbo.metadata.MetadataService?anyhost=true&application=demo-provider&background=false&bind.ip=30.221.128.96&bind.port=20880&connections=1&corethreads=2&delay=true0&deprecated=false&dubbo=10ync=0genic=0genic=0&exeted
 =false&getAndListenInstanceMetadata.1.callback=true&getAndL [...]
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main() INFO 
metadata.ServiceInstanceMetadataUtils: [DUBBO] Start registering instance 
address to registry., dubbo version: 3.1 .6, current host: 30.221.128.96
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main() INFO 
metadata.MetadataInfo: [DUBBO] metadata revision changed: null -> 
602d44cc6d653b9cd42ab23c3948b5ab, app: demo -provider, services: 1, dubbo 
version: 3.1.6, current host: 30.221.128.96
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main() INFO 
deploy.DefaultApplicationDeployer: [DUBBO] Dubbo 
Application[1.1](demo-provider) is ready ., dubbo version: 3.1.6, current host: 
30.221.128.96
+```
+
+### 4. Start service consumer
+
+The last step is to start a service consumer to call the service provider, 
which is the core of the RPC call, providing a bridge for the service consumer 
to call the service provider.
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.client.Application"
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.client.Application"
+```
+
+After executing the above command, wait for a while for the following log 
(`hi, dubbo`) to appear. The printed data is returned by the service provider 
after processing, marking the success of a service call.
+
+``` log
+[08/02/23 03:28:23:023 CST] org.apache.dubbo.samples.client.Application.main() 
INFO deploy.DefaultApplicationDeployer: [DUBBO] Dubbo 
Application[1.1](demo-consumer) is ready ., dubbo version: 3.1.6, current host: 
30.221.128.96
+Receive result ======> hi, dubbo
+```
+
+## Hands-on practice (from zero code development version)
+
+This chapter will teach you how to develop a microservice application from 
scratch through step-by-step tutorials.
+
+### 1. Start the registration center
+
+For a microservice application, the registry is an indispensable component. 
Only through the registration center, the consumer can successfully discover 
the address information of the server, and then make a call.
+
+To make this tutorial easier to use, we provide a simple starter based on the 
Apache Zookeeper registry. If you need to deploy the registry in a production 
environment, please refer to [Production Environment Initialization](/) to 
deploy a highly available registry.
+
+```bash
+Windows:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 2. Initialize the project
+
+Starting from this section, the project will be built and tested based on 
IntelliJ IDEA.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-32-16-image.png)
+
+As shown above, a basic project can be built.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-33-20-image.png)
+
+After initializing the project, you need to create 
`org.apache.dubbo.samples.api`, `org.apache.dubbo.samples.client` and 
`org.apache.dubbo.samples` in the `src/main/java` directory .provider` three 
packages.
+
+In the future, we will create the corresponding interface under `api`, create 
the corresponding client subscription service function under `client`, and 
create the corresponding server implementation and publish service function 
under `provider`.
+
+The above three packages respectively correspond to the APIs that the 
application depends on, the modules of the consumer-side application, and the 
modules of the server-side application. In actual deployment, it needs to be 
split into three projects, and the common dependency of the consumer and the 
service is the api module. Starting from simplicity, this tutorial will be 
developed in the same project to distinguish between multiple startup classes.
+
+### 3. Add Maven dependencies
+
+After initializing the project, we need to add Dubbo-related maven 
dependencies first.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-57-image.png)
+
+Edit the `pom.xml` file and add the following configuration.
+
+```xml
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo</artifactId>
+            <version>3.1.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>5.3.25</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-x-discovery</artifactId>
+            <version>5.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
+            <version>3.8.0</version>
+        </dependency>
+    </dependencies>
+```
+
+In this configuration, the dependencies of dubbo and zookeeper (and the 
corresponding connector curator) are defined.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-31-image.png)
+
+After adding the above configuration, you can refresh dependencies through 
IDEA's `Maven - Reload All Maven Projects`.
+
+### 4. Define service interface
+
+The service interface is a bridge between the consumer and the server in Dubbo.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-37-31-image.png)
+
+Create `GreetingsService` interface under `org.apache.dubbo.samples.api`, 
defined as follows:
+
+```java
+package org.apache.dubbo.samples.api;
+
+public interface GreetingsService {
+
+    String sayHi(String name);
+}
+```
+
+In `GreetingsService`, the `sayHi` method is defined. Subsequent services 
published by the server and services subscribed by the consumer are all 
developed around the `GreetingsService` interface.
+
+### 5. Define the implementation of the server
+
+After defining the service interface, you can define the corresponding 
implementation on the server side. Compared with the consumer side, this part 
of the implementation is a remote implementation, and there is no relevant 
information locally.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-38-04-image.png)
+
+Create `GreetingsServiceImpl` class under `org.apache.dubbo.samples.provider`, 
defined as follows:
+
+```java
+package org.apache.dubbo.samples.provider;
+
+import org.apache.dubbo.samples.api.GreetingsService;
+
+public class GreetingsServiceImpl implements GreetingsService {
+    @Override
+    public String sayHi(String name) {
+        return "hi," + name;
+    }
+}
+```
+
+In `GreetingsServiceImpl`, implement `GreetingsService` interface, return `hi, 
name` for `sayHi` method.
+
+### 6. Configure server-side XML configuration file
+
+From this step to step 7, the information of Dubbo service will be configured 
through Spring XML.
+
+First, let's create a configuration file for the server.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-07-image.png)
+
+Create a `dubbo-demo-provider.xml` file under the `resources` resource folder, 
defined as follows:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo";
+       xmlns="http://www.springframework.org/schema/beans"; 
xmlns:context="http://www.springframework.org/schema/context";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://dubbo.apache.org/schema/dubbo 
http://dubbo.apache.org/schema/dubbo/dubbo.xsd 
http://www.springframework.org/schema/context http://www.springframework 
.org/schema/context/spring-context.xsd">
+    <context:property-placeholder/>
+
+    <!-- Define application name -->
+    <dubbo:application name="demo-provider"/>
+
+    <!-- Define the registration center address -->
+    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+
+    <!-- Define the bean corresponding to the implementation class -->
+    <bean id="greetingsService" 
class="org.apache.dubbo.samples.provider.GreetingsServiceImpl"/>
+    <!-- Define service information, refer to the above bean -->
+    <dubbo:service interface="org.apache.dubbo.samples.api.GreetingsService" 
ref="greetingsService"/>
+
+</beans>
+```
+
+In this configuration file, the application name of Dubbo, the address of the 
registration center used by Dubbo, the spring bean for publishing the service, 
and the bean to be published through Dubbo are defined.
+
+### 7. Configure the consumer XML configuration file
+
+Similarly, we need to create a configuration file for the consumer.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-59-image.png)
+
+Create a `dubbo-demo-consumer.xml` file under the `resources` resource folder, 
defined as follows:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo";
+       xmlns="http://www.springframework.org/schema/beans"; 
xmlns:context="http://www.springframework.org/schema/context";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://dubbo.apache.org/schema/dubbo 
http://dubbo.apache.org/schema/dubbo/dubbo.xsd 
http://www.springframework.org/schema/context http://www.springframework 
.org/schema/context/spring-context.xsd">
+    <context:property-placeholder/>
+
+    <!-- Define application name -->
+    <dubbo:application name="demo-provider"/>
+
+    <!-- Define the registration center address -->
+    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+
+    <!-- Define subscription information, Dubbo will create corresponding 
beans in Spring Context -->
+    <dubbo:reference id="greetingsService" 
interface="org.apache.dubbo.samples.api.GreetingsService"/>
+
+</beans>
+```
+
+In this configuration file, the Dubbo application name, the registry address 
used by Dubbo, and the subscribed service information are defined.
+
+### 8. Configure the server startup class based on Spring
+
+In addition to configuring the XML configuration file, we also need to create 
a Spring Context-based startup class.
+
+First of all, we first create the startup class of the server.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-46-49-image.png)
+
+Create `Application` class under `org.apache.dubbo.samples.provider`, defined 
as follows:
+
+```java
+package org.apache.dubbo.samples.provider;
+
+import java.util.concurrent.CountDownLatch;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Application {
+
+    public static void main(String[] args) throws InterruptedException {
+        ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("dubbo-demo-provider.xml");
+        context. start();
+
+        // Suspend the main thread to prevent exit
+        new CountDownLatch(1). await();
+    }
+}
+```
+
+In this startup class, a `ClassPathXmlApplicationContext` is configured to 
read the `dubbo-demo-provider.xml` configuration file defined in the previous 
step 6.
+
+### 9. Configure consumer startup classes based on Spring
+
+Similarly, we need to create a startup class for the consumer.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-26-image.png)
+
+Create `Application` class under `org.apache.dubbo.samples.client`, defined as 
follows:
+
+```java
+package org.apache.dubbo.samples.client;
+
+import java.io.IOException;
+
+import org.apache.dubbo.samples.api.GreetingsService;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Application {
+    public static void main(String[] args) throws IOException {
+        ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("dubbo-demo-consumer.xml");
+        context. start();
+        GreetingsService greetingsService = (GreetingsService) context. 
getBean("greetingsService");
+
+        String message = greetingsService.sayHi("dubbo");
+        System.out.println("Receive result ======> " + message);
+        System.in.read();
+        System. exit(0);
+    }
+
+}
+```
+
+In this startup class, three functions are mainly performed:
+
+1. Configure a `ClassPathXmlApplicationContext` to read the 
`dubbo-demo-consumer.xml` configuration file defined in the previous step 7
+
+2. Obtain the bean created by Dubbo named `greetingsService` from the Spring 
Context
+
+3. Initiate a call to the remote end through this bean
+
+### 10. Start the application
+
+As of step 9, the code has been developed, and this section will start the 
entire project and verify it.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-01-29-image.png)
+
+The first is to start `org.apache.dubbo.samples.provider.Application`, wait 
for a while to appear the log as shown in the figure below (`Dubbo 
Application[1.1](demo-provider) is ready`), which means that the service 
provider is started , which indicates that the service provider can provide 
services externally.
+
+``` log
+[DUBBO] Dubbo Application[1.1](demo-provider) is ready., dubbo version: 3.1.6, 
current host: 30.221.128.96
+```
+
+Then start `org.apache.dubbo.samples.client.Application`, and wait for a while 
to see the log (`hi, dubbo`) as shown in the figure below, which means that the 
service consumer is started and the call to the server is successfully obtained.
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-50-image.png)
+
+``` log
+Receive result ======> hi, dubbo
+```
+
+## Further reading
+
+### 1. Dubbo XML configuration introduction
+
+The main configuration entries of Dubbo include `dubbo:application`, 
`dubbo:registry`, `dubbo:reference` and `dubbo:service`, etc. For more details, 
please refer to [XML configuration | Apache Dubbo](/zh/docs3- 
v2/java-sdk/reference-manual/config/xml/) article.
+
+## More
+
+This tutorial introduces how to develop a microservice application based on 
Dubbo x Spring XML. So far, the three main startup methods of Dubbo based on 
API, Spring Boot and Spring XML have been introduced.
+
+In the next section, the microservice development method based on Protobuf IDL 
configuration will be introduced.
\ No newline at end of file
diff --git a/content/zh/docs3-v2/java-sdk/quick-start/brief.md 
b/content/zh/docs3-v2/java-sdk/quick-start/brief.md
index 0e2a594a8e..dbf38b9ca7 100644
--- a/content/zh/docs3-v2/java-sdk/quick-start/brief.md
+++ b/content/zh/docs3-v2/java-sdk/quick-start/brief.md
@@ -1,6 +1,6 @@
 ---
 type: docs
-title: "1 - 快速部署一个微服务应用"
+title: "1 - 零基础快速部署一个微服务应用"
 linkTitle: "快速部署一个微服务应用"
 weight: 1
 description: "本文将基于 Dubbo Samples 示例演示如何快速搭建并部署一个微服务应用。"
diff --git a/content/zh/docs3-v2/java-sdk/quick-start/spring-boot.md 
b/content/zh/docs3-v2/java-sdk/quick-start/spring-boot.md
old mode 100755
new mode 100644
index ae27503d45..86d1e24794
--- a/content/zh/docs3-v2/java-sdk/quick-start/spring-boot.md
+++ b/content/zh/docs3-v2/java-sdk/quick-start/spring-boot.md
@@ -1,52 +1,396 @@
-
 ---
 type: docs
-title: "Spring Boot"
-linkTitle: "Spring Boot 开发服务"
-weight: 10
-description: "示例演示了如何使用 Spring Boot 方式快速开发 Dubbo 应用。"
+title: "3 - Dubbo x Spring Boot 开发微服务应用"
+linkTitle: "Dubbo x Spring Boot 开发微服务应用"
+weight: 3
+description: "本文将基于 Dubbo Samples 示例演示如何通过 Dubbo x Spring Boot 快速开发微服务应用。"
 ---
 
-> Dubbo 
还提供了包括[XML](../../reference-manual/config/xml)、[API](../../reference-manual/config/api)等多种启动与接入方式,更多开发方式和配置细节可参见[配置手册](../../reference-manual/config/)。
+## 目标
+
+从零上手开发基于 Dubbo x Spring Boot 的微服务开发,了解 Dubbo x Spring Boot 配置方式。
+
+## 难度
+
+低
+
+## 环境要求
+
+- 系统:Windows、Linux、MacOS
+
+- JDK 8 及以上(推荐使用 JDK17)
+
+- Git
+
+- IntelliJ IDEA(可选)
+
+- Docker (可选)
+
+## 项目介绍
+
+在本任务中,将分为 3 个子模块进行独立开发,模拟生产环境下的部署架构。
+
+```
+.  // apache/dubbo-samples/1-basic/dubbo-samples-spring-boot
+├── dubbo-samples-spring-boot-interface       // 共享 API 模块
+├── dubbo-samples-spring-boot-consumer        // 消费端模块
+└── dubbo-samples-spring-boot-provider        // 服务端模块
+```
+
+如上所示,共有 3 个模块,其中 `interface` 模块被 `consumer` 和 `provider` 两个模块共同依赖,存储 RPC 通信使用的 
API 接口。
+
+```
+.  // apache/dubbo-samples/1-basic/dubbo-samples-spring-boot
+├── dubbo-samples-spring-boot-interface       // 共享 API 模块
+│   ├── pom.xml
+│   └── src
+│       └── main
+│           └── java
+│               └── org
+│                   └── apache
+│                       └── dubbo
+│                           └── springboot
+│                               └── demo
+│                                   └── DemoService.java // API 接口
+├── dubbo-samples-spring-boot-consumer        // 消费端模块
+│   ├── pom.xml
+│   └── src
+│       ├── main
+│       │   ├── java
+│       │   │   └── org
+│       │   │       └── apache
+│       │   │           └── dubbo
+│       │   │               └── springboot
+│       │   │                   └── demo
+│       │   │                       └── consumer
+│       │   │                           ├── ConsumerApplication.java // 消费端启动类
+│       │   │                           └── Task.java                // 
消费端模拟调用任务
+│       │   └── resources
+│       │       └── application.yml       // Spring Boot 配置文件
+├── dubbo-samples-spring-boot-provider        // 服务端模块
+│   ├── pom.xml
+│   └── src
+│       └── main
+│           ├── java
+│           │   └── org
+│           │       └── apache
+│           │           └── dubbo
+│           │               └── springboot
+│           │                   └── demo
+│           │                       └── provider
+│           │                           ├── DemoServiceImpl.java         // 
服务端实现类
+│           │                           └── ProviderApplication.java     // 
服务端启动类
+│           └── resources
+│               └── application.yml       // Spring Boot 配置文件
+└── pom.xml
+```
+
+如上为本教程接下来会使用到的项目的文件结构。
+
+## 快速部署(基于 Samples 直接启动)
+
+本章将通过几个简单的命令,一步一步教你如何部署并运行一个基于 Dubbo x Spring Boot 的用例。
 
-## 示例核心流程
+注:本章部署的代码细节可以在 [apache/dubbo-samples](https://github.com/apache/dubbo-samples) 
这个仓库中 `1-basic/dubbo-samples-spring-boot` 中找到,在下一章中也将展开进行讲解。
 
-关于示例的更详细解读可参见 [注解配置](../../reference-manual/config/annotation/)
+### 1. 获取测试工程
 
-### 1. 定义服务接口
+在开始整个教程之前,我们需要先获取测试工程的代码。Dubbo 的所有测试用例代码都存储在 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples) 
这个仓库中,以下这个命令可以帮你获取 Samples 仓库的所有代码。
+
+```bash
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git  
+```
+
+### 2. 启动一个简易的注册中心
+
+对于一个微服务化的应用来说,注册中心是不可或缺的一个组件。只有通过注册中心,消费端才可以成功发现服务端的地址信息,进而进行调用。
+
+为了让本教程更易于上手,我们提供了一个基于 Apache Zookeeper 
注册中心的简易启动器,如果您需要在生产环境部署注册中心,请参考[生产环境初始化](/)一文部署高可用的注册中心。
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 3. 本地打包 API 模块
+
+为了成功编译服务端、消费端模块,需要先在本地打包安装 `dubbo-samples-spring-boot-interface` 模块。
+
+```bash
+./mvnw clean install -pl 1-basic/dubbo-samples-spring-boot
+./mvnw clean install -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-interface
+```
+
+### 4. 启动服务提供者
+
+在启动了注册中心之后,下一步是启动一个对外提供服务的服务提供者。在 dubbo-samples 中也提供了对应的示例,可以通过以下命令快速拉起。
+
+```bash
+Windows:  
+./mvnw.cmd clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.provider.ProviderApplication"
  
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.provider.ProviderApplication"
  
+
+注:需要开一个独立的 terminal 运行,命令将会保持一直执行的状态。  
+```
+
+在执行完上述命令以后,等待一会出现如下所示的日志(`Current Spring Boot Application is 
await`)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。
+
+```log
+2023-02-08 17:13:00.357  INFO 80600 --- [lication.main()] 
o.a.d.c.d.DefaultApplicationDeployer     :  [DUBBO] Dubbo 
Application[1.1](dubbo-springboot-demo-provider) is ready., dubbo version: 
3.2.0-beta.4, current host: 30.221.128.96
+2023-02-08 17:13:00.369  INFO 80600 --- [lication.main()] 
o.a.d.s.d.provider.ProviderApplication   : Started ProviderApplication in 9.114 
seconds (JVM running for 26.522)
+2023-02-08 17:13:00.387  INFO 80600 --- [pool-1-thread-1] 
.b.c.e.AwaitingNonWebApplicationListener :  [Dubbo] Current Spring Boot 
Application is await...
+```
 
-dubbo-samples-spring-boot-interface
+### 5. 启动服务消费者
+
+最后一步是启动一个服务消费者来调用服务提供者,也即是 RPC 调用的核心,为服务消费者提供调用服务提供者的桥梁。
+
+```bash
+Windows:  
+./mvnw.cmd clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-consumer 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.consumer.ConsumerApplication"
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 
1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-consumer 
-Dexec.mainClass="org.apache.dubbo.springboot.demo.consumer.ConsumerApplication"
+```
+
+在执行完上述命令以后,等待一会出现如下所示的日志(`Hello world`),打印出的数据就是服务提供者处理之后返回的,标志着一次服务调用的成功。
+
+```log
+2023-02-08 17:14:33.045  INFO 80740 --- [lication.main()] 
o.a.d.s.d.consumer.ConsumerApplication   : Started ConsumerApplication in 
11.052 seconds (JVM running for 31.62)
+Receive result ======> Hello world
+2023-02-08 17:14:33.146  INFO 80740 --- [pool-1-thread-1] 
.b.c.e.AwaitingNonWebApplicationListener :  [Dubbo] Current Spring Boot 
Application is await...
+Wed Feb 08 17:14:34 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:35 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:36 CST 2023 Receive result ======> Hello world
+Wed Feb 08 17:14:37 CST 2023 Receive result ======> Hello world
+```
+
+## 动手实践(从零代码开发版)
+
+本章将通过手把手的教程一步一步教你如何从零开发一个微服务应用。
+
+### 1. 启动注册中心
+
+对于一个微服务化的应用来说,注册中心是不可或缺的一个组件。只有通过注册中心,消费端才可以成功发现服务端的地址信息,进而进行调用。
+
+为了让本教程更易于上手,我们提供了一个基于 Apache Zookeeper 
注册中心的简易启动器,如果您需要在生产环境部署注册中心,请参考[生产环境初始化](/)一文部署高可用的注册中心。
+
+```bash
+Windows:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 2. 初始化项目
+
+从本小节开始,将基于 IntelliJ IDEA 进行工程的搭建以及测试。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-25-27-image.png)
+
+如上图所示,可以建立一个基础的项目。
+
+搭建了基础项目之后,我们还需要创建 `dubbo-spring-boot-demo-interface` 
、`dubbo-spring-boot-demo-provider` 和 `dubbo-spring-boot-demo-consumer` 三个子模块。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-17-image.png)
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-26-57-image.png)
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-45-image.png)
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-28-26-image.png)
+
+创建了三个子模块之后,需要创建一下几个文件夹:
+
+1. 在 `dubbo-spring-boot-demo-consumer/src/main/java` 下创建 
`org.apache.dubbo.springboot.demo.consumer` package
+
+2. 在 `dubbo-spring-boot-demo-interface/src/main/java` 下创建 
`org.apache.dubbo.springboot.demo` package
+
+3. 在 `dubbo-spring-boot-demo-provider/src/main/java` 下创建 
`org.apache.dubbo.springboot.demo.provider`  package
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-32-50-image.png)
+
+最终的文件夹参考如上图所示。
+
+### 3. 添加 Maven 依赖
+
+在初始化完项目以后,我们需要先添加 Dubbo 相关的 maven 依赖。
+
+对于多模块项目,首先需要在父项目的 `pom.xml` 里面配置依赖信息。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-53-18-image.png)
+
+编辑 `./pom.xml` 这个文件,添加下列配置。
+
+```xml
+    <properties>
+        <dubbo.version>3.2.0-beta.4</dubbo.version>
+        <spring-boot.version>2.7.8</spring-boot.version>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Spring Boot -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- Dubbo -->
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-bom</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.dubbo</groupId>
+                <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
+                <version>${dubbo.version}</version>
+                <type>pom</type>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+```
+
+然后在 `dubbo-spring-boot-consumer` 和 `dubbo-spring-boot-provider` 两个模块 `pom.xml` 
中进行具体依赖的配置。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-52-53-image.png)
+
+编辑 `./dubbo-spring-boot-consumer/pom.xml` 和 
`./dubbo-spring-boot-provider/pom.xml` 这两文件,都添加下列配置。
+
+```xml
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-spring-boot-interface</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+
+        <!-- dubbo -->
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
+            <type>pom</type>
+            <exclusions>
+                <exclusion>
+                    <artifactId>slf4j-reload4j</artifactId>
+                    <groupId>org.slf4j</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- spring boot starter -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+    </dependencies>
+```
+
+在这份配置中,定义了 dubbo 和 zookeeper(以及对应的连接器 curator)的依赖。
+
+添加了上述的配置以后,可以通过 IDEA 的 `Maven - Reload All Maven Projects` 刷新依赖。
+
+### 4. 定义服务接口
+
+服务接口 Dubbo 中沟通消费端和服务端的桥梁。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-57-29-image.png)
+
+在 `dubbo-spring-boot-demo-interface` 模块的 `org.apache.dubbo.samples.api` 下建立 
`DemoService` 接口,定义如下:
 
-**DemoService.java**
 ```java
-package org.apache.dubbo.samples.basic.api;
+package org.apache.dubbo.springboot.demo;
 
 public interface DemoService {
+
     String sayHello(String name);
 }
 ```
 
-### 2. 提供方实现接口并暴露服务
+在 `GreetingsService` 中,定义了 `sayHi` 这个方法。后续服务端发布的服务,消费端订阅的服务都是围绕着 
`GreetingsService` 接口展开的。
+
+### 5. 定义服务端的实现
+
+定义了服务接口之后,可以在服务端这一侧定义对应的实现,这部分的实现相对于消费端来说是远端的实现,本地没有相关的信息。
 
-dubbo-samples-spring-boot-provider
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-59-46-image.png)
+
+在`dubbo-spring-boot-demo-provider` 模块的 `org.apache.dubbo.samples.provider` 下建立 
`DemoServiceImpl` 类,定义如下:
 
-**DemoServiceImpl.java**
 ```java
+package org.apache.dubbo.springboot.demo.provider;
+
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.springboot.demo.DemoService;
+
 @DubboService
 public class DemoServiceImpl implements DemoService {
+
     @Override
     public String sayHello(String name) {
-        System.out.println("Hello " + name + ", request from consumer: " + 
RpcContext.getContext().getRemoteAddress());
         return "Hello " + name;
     }
 }
 ```
 
-### 3. 配置 application.yml 文件
+在 `DemoServiceImpl` 中,实现了 `DemoService` 接口,对于 `sayHello` 方法返回 `Hello name`。
+
+注:在`DemoServiceImpl` 类中添加了 `@DubboService` 注解,通过这个配置可以基于 Spring Boot 去发布 Dubbo 
服务。
+
+### 6. 配置服务端 Yaml 配置文件
 
-dubbo-samples-spring-boot-provider 
+从本步骤开始至第 7 步,将会通过 Spring Boot 的方式配置 Dubbo 的一些基础信息。
+
+首先,我们先创建服务端的配置文件。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-00-24-image.png)
+
+在 `dubbo-spring-boot-demo-provider` 模块的 `resources` 资源文件夹下建立 `application.yml` 
文件,定义如下:
 
-**application.yml**
 ```yaml
 dubbo:
   application:
@@ -55,138 +399,158 @@ dubbo:
     name: dubbo
     port: -1
   registry:
-    id: zk-registry
-    address: zookeeper://127.0.0.1:2181
-  config-center:
-    address: zookeeper://127.0.0.1:2181
-  metadata-report:
-    address: zookeeper://127.0.0.1:2181
+    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
 ```
 
-### 4. 定义 Spring Boot 主函数
+在这个配置文件中,定义了 Dubbo 的应用名、Dubbo 协议信息、Dubbo 使用的注册中心地址。
+
+### 7. 配置消费端 XML 配置文件
+
+同样的,我们需要创建消费端的配置文件。
 
-dubbo-samples-spring-boot-provider
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-03-image.png)
+
+在 `dubbo-spring-boot-demo-consumer` 模块的 `resources` 资源文件夹下建立 `application.yml` 
文件,定义如下:
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-consumer
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    address: zookeeper://${zookeeper.address:127.0.0.1}:2181
+```
+
+在这个配置文件中,定义了 Dubbo 的应用名、Dubbo 协议信息、Dubbo 使用的注册中心地址。
+
+### 8. 基于 Spring 配置服务端启动类
+
+除了配置 Yaml 配置文件之外,我们还需要创建基于 Spring Boot 的启动类。
+
+首先,我们先创建服务端的启动类。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-38-image.png)
+
+在 `dubbo-spring-boot-demo-provider` 模块的 
`org.apache.dubbo.springboot.demo.provider` 下建立 `Application` 类,定义如下:
 
-**ProviderApplication.java**
 ```java
+package org.apache.dubbo.springboot.demo.provider;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
 @SpringBootApplication
 @EnableDubbo
 public class ProviderApplication {
-    public static void main(String[] args) throws Exception {
-        new EmbeddedZooKeeper(2181, false).start();
-
+    public static void main(String[] args) {
         SpringApplication.run(ProviderApplication.class, args);
-        System.out.println("dubbo service started");
-        new CountDownLatch(1).await();
     }
 }
 ```
-其中,`@EnableDubbo` 必须配置。
 
-### 5. 引用远程服务
+在这个启动类中,配置了一个 `ProviderApplication` 去读取我们前面第 6 步中定义的 `application.yml` 
配置文件并启动应用。
 
-dubbo-samples-spring-boot-consumer
+### 9. 基于 Spring 配置消费端启动类
+
+同样的,我们需要创建消费端的启动类。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-11-image.png)
+
+在 `dubbo-spring-boot-demo-consumer` 模块的 
`org.apache.dubbo.springboot.demo.consumer` 下建立 `Application` 类,定义如下:
 
-**ConsumerApplication.java**
 ```java
+package org.apache.dubbo.springboot.demo.consumer;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@EnableDubbo
 public class ConsumerApplication {
-    @DubboReference
-    private DemoService demoService;
+
+    public static void main(String[] args) {
+        SpringApplication.run(ConsumerApplication.class, args);
+    }
 }
 ```
 
-### 6. 定义 application.yml
+在这个启动类中,配置了一个 `ConsumerApplication` 去读取我们前面第 7 步中定义的 `application.yml` 
配置文件并启动应用。
 
-dubbo-samples-spring-boot-consumer
+### 10. 配置消费端请求任务
 
-**application.yml**
-```yaml
-dubbo:
-  application:
-    name: dubbo-springboot-demo-consumer
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    id: zk-registry
-    address: zookeeper://127.0.0.1:2181
-  config-center:
-    address: zookeeper://127.0.0.1:2181
-  metadata-report:
-    address: zookeeper://127.0.0.1:2181
-```
+除了配置消费端的启动类,我们在 Spring Boot 模式下还可以基于 `CommandLineRunner`去创建
 
-### 7. 加载 Spring 配置,并调用远程服务
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-33-image.png)
 
-dubbo-samples-spring-boot-consumer
+在 `dubbo-spring-boot-demo-consumer` 模块的 
`org.apache.dubbo.springboot.demo.consumer` 下建立 `Task` 类,定义如下:
 
-**ConsumerApplication.java**
 ```java
-@SpringBootApplication
-@Service
-@EnableDubbo
-public class ConsumerApplication {
+package org.apache.dubbo.springboot.demo.consumer;
+
+import java.util.Date;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.springboot.demo.DemoService;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Task implements CommandLineRunner {
     @DubboReference
     private DemoService demoService;
-    
-    public String doSayHello(String name) {
-        return demoService.sayHello(name);
-    }
 
-    public static void main(String[] args) {
-        ConfigurableApplicationContext context = 
SpringApplication.run(ConsumerApplication.class, args);
-        ConsumerApplication application = 
context.getBean(ConsumerApplication.class);
-        String result = application.doSayHello("world");
-        System.out.println("result: " + result);
+    @Override
+    public void run(String... args) throws Exception {
+        String result = demoService.sayHello("world");
+        System.out.println("Receive result ======> " + result);
+
+        new Thread(()-> {
+            while (true) {
+                try {
+                    Thread.sleep(1000);
+                    System.out.println(new Date() + " Receive result ======> " 
+ demoService.sayHello("world"));
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                    Thread.currentThread().interrupt();
+                }
+            }
+        }).start();
     }
 }
 ```
 
-其中,`@EnableDubbo` 必须配置。
+在 `Task` 类中,通过`@DubboReference` 从 Dubbo 获取了一个 RPC 订阅,这个 `demoService` 
可以像本地调用一样直接调用。在 `run`方法中创建了一个线程进行调用。
 
-## 下载示例代码
-完整示例代码在 
[dubbo-samples](https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot)
 中。
+### 11. 启动应用
 
-1. 下载源码
-```shell script
-git clone -b master https://github.com/apache/dubbo-samples.git
-```
-2. 进入示例目录
-```shell script
-cd dubbo-samples/1-basic/dubbo-samples-spring-boot
-```
-3. 在 dubbo-samples-spring-boot 目录执行 maven 命令
-```shell script
-mvn clean package
-```
+截止第 10 步,代码就已经开发完成了,本小节将启动整个项目并进行验证。
 
-## 快速运行示例
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-03-59-image.png)
 
-### Provider
- 
-进入 dubbo-samples-spring-boot-provider/target 目录并启动 java 进程
-```shell script
-cd ./dubbo-samples-spring-boot-provider
-java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
-```
+首先是启动 `org.apache.dubbo.samples.provider.Application` ,等待一会出现如下图所示的日志(`Current 
Spring Boot Application is await`)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。
 
-### consumer
- 
-进入 dubbo-samples-spring-boot-consumer/target 目录并启动 java 进程
-```shell script
-cd ./dubbo-samples-spring-boot-consumer
-java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
+```log
+[Dubbo] Current Spring Boot Application is await...
 ```
 
-**查看结果**
- 
-在 consumer 侧会输出如下信息:
-```
-result: Hello World
-```
-在 provider 侧会输出如下信息:
-```
-Hello World, request from consumer: xxx.xxx.xxx.xxx
+然后是启动`org.apache.dubbo.samples.client.Application` ,等待一会出现如下图所示的日志(`Hello 
world` )即代表服务消费端启动完毕并调用到服务端成功获取结果。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-05-02-image.png)
+
+```log
+Receive result ======> Hello world
 ```
 
-> 至此就把 Dubbo 的基本功能都实现了,可以在 Dubbo 的基础上进行更多的开发。
+## 延伸阅读
+
+### 1. Dubbo 的 Spring 配置介绍
+
+Dubbo 的主要配置入口有 yaml 的配置内容、`@DubboReference` 和`@DubboService` 等,更多的细节可以参考 
[Annotation 配置 | Apache 
Dubbo](/zh/docs3-v2/java-sdk/reference-manual/config/annotation/) 一文。
+
+## 更多
+
+本教程介绍了如何基于 Dubbo x Spring Boot 开发一个微服务应用。在下一节中,将介绍另外一种 Dubbo 的配置方式—— Dubbo x 
Spring XML。
diff --git a/content/zh/docs3-v2/java-sdk/quick-start/spring-xml.md 
b/content/zh/docs3-v2/java-sdk/quick-start/spring-xml.md
new file mode 100644
index 0000000000..3a415b443e
--- /dev/null
+++ b/content/zh/docs3-v2/java-sdk/quick-start/spring-xml.md
@@ -0,0 +1,393 @@
+---
+type: docs
+title: "4 - Dubbo x Spring XML 开发微服务应用"
+linkTitle: "Dubbo x Spring XML 开发微服务应用"
+weight: 4
+description: "本文将基于 Dubbo Samples 示例演示如何通过 Dubbo x Spring XML 快速开发微服务应用。"
+---
+
+## 目标
+
+从零上手开发基于 Dubbo x Spring XML 的微服务开发,了解 Dubbo x Spring XML 配置方式。
+
+## 难度
+
+低
+
+## 环境要求
+
+- 系统:Windows、Linux、MacOS
+
+- JDK 8 及以上(推荐使用 JDK17)
+
+- Git
+
+- IntelliJ IDEA(可选)
+
+- Docker (可选)
+
+## 快速部署(基于 Samples 直接启动)
+
+本章将通过几个简单的命令,一步一步教你如何部署并运行一个基于 Dubbo x Spring XML 的用例。  
+
+注:本章部署的代码细节可以在 [apache/dubbo-samples](https://github.com/apache/dubbo-samples) 
这个仓库中 `1-basic/dubbo-samples-spring-xml` 中找到,在下一章中也将展开进行讲解。
+
+### 1. 获取测试工程
+
+在开始整个教程之前,我们需要先获取测试工程的代码。Dubbo 的所有测试用例代码都存储在 
[apache/dubbo-samples](https://github.com/apache/dubbo-samples) 
这个仓库中,以下这个命令可以帮你获取 Samples 仓库的所有代码。  
+
+```bash
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git  
+```
+
+### 2. 启动一个简易的注册中心
+
+对于一个微服务化的应用来说,注册中心是不可或缺的一个组件。只有通过注册中心,消费端才可以成功发现服务端的地址信息,进而进行调用。
+
+为了让本教程更易于上手,我们提供了一个基于 Apache Zookeeper 
注册中心的简易启动器,如果您需要在生产环境部署注册中心,请参考[生产环境初始化](/)一文部署高可用的注册中心。
+
+```bash
+Windows:
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 3. 启动服务提供者
+
+在启动了注册中心之后,下一步是启动一个对外提供服务的服务提供者。在 dubbo-samples 中也提供了对应的示例,可以通过以下命令快速拉起。  
+
+```bash
+Windows:  
+./mvnw.cmd clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.provider.Application"  
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.provider.Application"  
+
+注:需要开一个独立的 terminal 运行,命令将会保持一直执行的状态。  
+```
+
+在执行完上述命令以后,等待一会出现如下所示的日志(`Dubbo Application[1.1](demo-provider) is 
ready.`)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。  
+
+```log
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main()  INFO 
metadata.ConfigurableMetadataServiceExporter:  [DUBBO] The MetadataService 
exports urls : 
[dubbo://30.221.128.96:20880/org.apache.dubbo.metadata.MetadataService?anyhost=true&application=demo-provider&background=false&bind.ip=30.221.128.96&bind.port=20880&connections=1&corethreads=2&delay=0&deprecated=false&dubbo=2.0.2&dynamic=true&executes=100&generic=false&getAndListenInstanceMetadata.1.callback=true&
 [...]
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main()  INFO 
metadata.ServiceInstanceMetadataUtils:  [DUBBO] Start registering instance 
address to registry., dubbo version: 3.1.6, current host: 30.221.128.96
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main()  INFO 
metadata.MetadataInfo:  [DUBBO] metadata revision changed: null -> 
602d44cc6d653b9cd42ab23c3948b5ab, app: demo-provider, services: 1, dubbo 
version: 3.1.6, current host: 30.221.128.96
+[08/02/23 03:26:52:052 CST] 
org.apache.dubbo.samples.provider.Application.main()  INFO 
deploy.DefaultApplicationDeployer:  [DUBBO] Dubbo 
Application[1.1](demo-provider) is ready., dubbo version: 3.1.6, current host: 
30.221.128.96
+```
+
+### 4. 启动服务消费者
+
+最后一步是启动一个服务消费者来调用服务提供者,也即是 RPC 调用的核心,为服务消费者提供调用服务提供者的桥梁。  
+
+```bash
+Windows:  
+./mvnw.cmd clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.client.Application"  
+
+Linux / MacOS:
+./mvnw clean compile exec:java -pl 1-basic/dubbo-samples-spring-xml 
-Dexec.mainClass="org.apache.dubbo.samples.client.Application"  
+```
+
+在执行完上述命令以后,等待一会出现如下所示的日志(`hi, dubbo`),打印出的数据就是服务提供者处理之后返回的,标志着一次服务调用的成功。  
+
+```log
+[08/02/23 03:28:23:023 CST] org.apache.dubbo.samples.client.Application.main() 
 INFO deploy.DefaultApplicationDeployer:  [DUBBO] Dubbo 
Application[1.1](demo-consumer) is ready., dubbo version: 3.1.6, current host: 
30.221.128.96
+Receive result ======> hi, dubbo
+```
+
+## 动手实践(从零代码开发版)
+
+本章将通过手把手的教程一步一步教你如何从零开发一个微服务应用。
+
+### 1. 启动注册中心
+
+对于一个微服务化的应用来说,注册中心是不可或缺的一个组件。只有通过注册中心,消费端才可以成功发现服务端的地址信息,进而进行调用。
+
+为了让本教程更易于上手,我们提供了一个基于 Apache Zookeeper 
注册中心的简易启动器,如果您需要在生产环境部署注册中心,请参考[生产环境初始化](/)一文部署高可用的注册中心。
+
+```bash
+Windows:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper
+
+Linux / MacOS:
+git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
+cd dubbo-samples
+./mvnw clean compile exec:java -pl tools/embedded-zookeeper
+
+Docker:
+docker run --name some-zookeeper -p 2181:2181 --restart always -d zookeeper
+```
+
+### 2. 初始化项目
+
+从本小节开始,将基于 IntelliJ IDEA 进行工程的搭建以及测试。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-32-16-image.png)
+
+如上图所示,可以建立一个基础的项目。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-33-20-image.png)
+
+在初始化完项目之后,需要在 `src/main/java` 目录下创建 `org.apache.dubbo.samples.api` 
、`org.apache.dubbo.samples.client`  和 `org.apache.dubbo.samples.provider`  三个 
package。
+
+后续我们将在 `api`  下创建对应的接口,在 `client` 下创建对应客户端订阅服务的功能,在 `provider` 
下创建对应服务端的实现以及发布服务的功能。
+
+上述三个 package 分别对应了应用共同依赖的 api、消费端应用的模块、服务端应用的模块。在实际部署中需要拆成三个工程,消费端和服务的共同依赖 api 
模块。从简单出发,本教程将在同一个工程中进行开发,区分多个启动类。
+
+### 3. 添加 Maven 依赖
+
+在初始化完项目以后,我们需要先添加 Dubbo 相关的 maven 依赖。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-57-image.png)
+
+编辑 `pom.xml` 这个文件,添加下列配置。
+
+```xml
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo</artifactId>
+            <version>3.1.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>5.3.25</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-x-discovery</artifactId>
+            <version>5.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
+            <version>3.8.0</version>
+        </dependency>
+    </dependencies>
+```
+
+在这份配置中,定义了 dubbo 和 zookeeper(以及对应的连接器 curator)的依赖。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-31-image.png)
+
+添加了上述的配置以后,可以通过 IDEA 的 `Maven - Reload All Maven Projects` 刷新依赖。
+
+### 4. 定义服务接口
+
+服务接口 Dubbo 中沟通消费端和服务端的桥梁。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-37-31-image.png)
+
+在 `org.apache.dubbo.samples.api` 下建立 `GreetingsService` 接口,定义如下:
+
+```java
+package org.apache.dubbo.samples.api;
+
+public interface GreetingsService {
+
+    String sayHi(String name);
+}
+```
+
+在 `GreetingsService` 中,定义了 `sayHi` 这个方法。后续服务端发布的服务,消费端订阅的服务都是围绕着 
`GreetingsService` 接口展开的。
+
+### 5. 定义服务端的实现
+
+定义了服务接口之后,可以在服务端这一侧定义对应的实现,这部分的实现相对于消费端来说是远端的实现,本地没有相关的信息。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-38-04-image.png)
+
+在 `org.apache.dubbo.samples.provider` 下建立 `GreetingsServiceImpl` 类,定义如下:
+
+```java
+package org.apache.dubbo.samples.provider;
+
+import org.apache.dubbo.samples.api.GreetingsService;
+
+public class GreetingsServiceImpl implements GreetingsService {
+    @Override
+    public String sayHi(String name) {
+        return "hi, " + name;
+    }
+}
+```
+
+在 `GreetingsServiceImpl` 中,实现了 `GreetingsService` 接口,对于 `sayHi` 方法返回 `hi, 
name`。
+
+### 6. 配置服务端 XML 配置文件
+
+从本步骤开始至第 7 步,将会通过 Spring XML 的方式配置 Dubbo 服务的信息。
+
+首先,我们先创建服务端的配置文件。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-07-image.png)
+
+在 `resources` 资源文件夹下建立 `dubbo-demo-provider.xml` 文件,定义如下:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo";
+       xmlns="http://www.springframework.org/schema/beans"; 
xmlns:context="http://www.springframework.org/schema/context";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://dubbo.apache.org/schema/dubbo 
http://dubbo.apache.org/schema/dubbo/dubbo.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd";>
+    <context:property-placeholder/>
+
+    <!-- 定义应用名 -->
+    <dubbo:application name="demo-provider"/>
+
+    <!-- 定义注册中心地址 -->
+    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+
+    <!-- 定义实现类对应的 bean -->
+    <bean id="greetingsService" 
class="org.apache.dubbo.samples.provider.GreetingsServiceImpl"/>
+    <!-- 定义服务信息,引用上面的 bean -->
+    <dubbo:service interface="org.apache.dubbo.samples.api.GreetingsService" 
ref="greetingsService"/>
+
+</beans>
+```
+
+在这个配置文件中,定义了 Dubbo 的应用名、Dubbo 使用的注册中心地址、发布服务的 spring bean 以及通过 Dubbo 去发布这个 
bean。
+
+### 7. 配置消费端 XML 配置文件
+
+同样的,我们需要创建消费端的配置文件。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-59-image.png)
+
+在 `resources` 资源文件夹下建立 `dubbo-demo-consumer.xml` 文件,定义如下:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo";
+       xmlns="http://www.springframework.org/schema/beans"; 
xmlns:context="http://www.springframework.org/schema/context";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://dubbo.apache.org/schema/dubbo 
http://dubbo.apache.org/schema/dubbo/dubbo.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd";>
+    <context:property-placeholder/>
+
+    <!-- 定义应用名 -->
+    <dubbo:application name="demo-provider"/>
+
+    <!-- 定义注册中心地址 -->
+    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+
+    <!-- 定义订阅信息,Dubbo 会在 Spring Context 中创建对应的 bean -->
+    <dubbo:reference id="greetingsService" 
interface="org.apache.dubbo.samples.api.GreetingsService"/>
+
+</beans>
+```
+
+在这个配置文件中,定义了 Dubbo 的应用名、Dubbo 使用的注册中心地址、订阅的服务信息。
+
+### 8. 基于 Spring 配置服务端启动类
+
+除了配置 XML 配置文件之外,我们还需要创建基于 Spring Context 的启动类。
+
+首先,我们先创建服务端的启动类。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-46-49-image.png)
+
+在 `org.apache.dubbo.samples.provider` 下建立 `Application` 类,定义如下:
+
+```java
+package org.apache.dubbo.samples.provider;
+
+import java.util.concurrent.CountDownLatch;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Application {
+
+    public static void main(String[] args) throws InterruptedException {
+        ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("dubbo-demo-provider.xml");
+        context.start();
+
+        // 挂起主线程,防止退出
+        new CountDownLatch(1).await();
+    }
+}
+```
+
+在这个启动类中,配置了一个 `ClassPathXmlApplicationContext` 去读取我们前面第 6 步中定义的 
`dubbo-demo-provider.xml` 配置文件。
+
+### 9. 基于 Spring 配置消费端启动类
+
+同样的,我们需要创建消费端的启动类。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-26-image.png)
+
+在 `org.apache.dubbo.samples.client` 下建立 `Application` 类,定义如下:
+
+```java
+package org.apache.dubbo.samples.client;
+
+import java.io.IOException;
+
+import org.apache.dubbo.samples.api.GreetingsService;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class Application {
+    public static void main(String[] args) throws IOException {
+        ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext("dubbo-demo-consumer.xml");
+        context.start();
+        GreetingsService greetingsService = (GreetingsService) 
context.getBean("greetingsService");
+
+        String message = greetingsService.sayHi("dubbo");
+        System.out.println("Receive result ======> " + message);
+        System.in.read();
+        System.exit(0);
+    }
+
+}
+```
+
+在这个启动类中,主要执行了三个功能:
+
+1. 配置了一个 `ClassPathXmlApplicationContext` 去读取我们前面第 7 步中定义的 
`dubbo-demo-consumer.xml` 配置文件
+
+2. 从 Spring Context 中获取名字为 `greetingsService` 的由 Dubbo 创建的 bean
+
+3. 通过这个 bean 对远端发起调用
+
+### 10. 启动应用
+
+截止第 9 步,代码就已经开发完成了,本小节将启动整个项目并进行验证。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-01-29-image.png)
+
+首先是启动 `org.apache.dubbo.samples.provider.Application` ,等待一会出现如下图所示的日志(`Dubbo 
Application[1.1](demo-provider) is ready`)即代表服务提供者启动完毕,标志着该服务提供者可以对外提供服务了。
+
+```log
+[DUBBO] Dubbo Application[1.1](demo-provider) is ready., dubbo version: 3.1.6, 
current host: 30.221.128.96
+```
+
+然后是启动`org.apache.dubbo.samples.client.Application` ,等待一会出现如下图所示的日志(`hi, dubbo` 
)即代表服务消费端启动完毕并调用到服务端成功获取结果。
+
+![](/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-50-image.png)
+
+```log
+Receive result ======> hi, dubbo
+```
+
+## 延伸阅读
+
+### 1. Dubbo 的 XML 配置介绍
+
+Dubbo 的主要配置入口有`dubbo:application` 、`dubbo:registry` 、 `dubbo:reference`  和 
`dubbo:service` 等,更多的细节可以参考 [XML 配置 | Apache 
Dubbo](/zh/docs3-v2/java-sdk/reference-manual/config/xml/) 一文。
+
+## 更多
+
+本教程介绍了如何基于 Dubbo x Spring XML 开发一个微服务应用。至此,Dubbo 基于 API、Spring Boot、Spring XML 
三种主要的启动方式都已经介绍完毕。
+
+在下一节中,将介绍基于 Protobuf IDL 配置的微服务开发方式。
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-27-31-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-27-31-image.png
new file mode 100644
index 0000000000..bde3455f6b
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-27-31-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-32-16-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-32-16-image.png
new file mode 100644
index 0000000000..c2046865cb
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-32-16-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-33-20-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-33-20-image.png
new file mode 100644
index 0000000000..955d0c0242
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-33-20-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-31-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-31-image.png
new file mode 100644
index 0000000000..c28103252b
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-31-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-57-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-57-image.png
new file mode 100644
index 0000000000..0749b867b8
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-36-57-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-37-31-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-37-31-image.png
new file mode 100644
index 0000000000..a3bf3b3603
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-37-31-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-38-04-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-38-04-image.png
new file mode 100644
index 0000000000..8d48d14013
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-38-04-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-07-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-07-image.png
new file mode 100644
index 0000000000..8876b2081a
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-07-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-59-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-59-image.png
new file mode 100644
index 0000000000..b51931ceba
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-40-59-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-46-49-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-46-49-image.png
new file mode 100644
index 0000000000..255e22baf2
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-46-49-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-21-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-21-image.png
new file mode 100644
index 0000000000..e8cc46d78c
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-21-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-26-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-26-image.png
new file mode 100644
index 0000000000..e8cc46d78c
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-15-48-26-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-01-29-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-01-29-image.png
new file mode 100644
index 0000000000..4c5b68df4f
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-01-29-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-43-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-43-image.png
new file mode 100644
index 0000000000..1cddbefc53
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-43-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-50-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-50-image.png
new file mode 100644
index 0000000000..1cddbefc53
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-16-02-50-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-25-27-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-25-27-image.png
new file mode 100644
index 0000000000..c26d7aebff
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-25-27-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-26-57-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-26-57-image.png
new file mode 100644
index 0000000000..f022c668de
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-26-57-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-17-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-17-image.png
new file mode 100644
index 0000000000..c99244876e
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-17-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-41-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-41-image.png
new file mode 100644
index 0000000000..df77a14827
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-41-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-45-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-45-image.png
new file mode 100644
index 0000000000..df77a14827
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-27-45-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-28-26-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-28-26-image.png
new file mode 100644
index 0000000000..591aa1b963
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-28-26-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-32-50-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-32-50-image.png
new file mode 100644
index 0000000000..771cc0ff8a
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-32-50-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-52-53-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-52-53-image.png
new file mode 100644
index 0000000000..be17db499a
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-52-53-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-53-18-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-53-18-image.png
new file mode 100644
index 0000000000..d060ff42cf
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-53-18-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-57-29-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-57-29-image.png
new file mode 100644
index 0000000000..02b1f5093d
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-57-29-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-59-46-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-59-46-image.png
new file mode 100644
index 0000000000..e467fa90f0
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-17-59-46-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-00-24-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-00-24-image.png
new file mode 100644
index 0000000000..d07aeaa31a
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-00-24-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-03-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-03-image.png
new file mode 100644
index 0000000000..b6ce51751a
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-03-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-38-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-38-image.png
new file mode 100644
index 0000000000..d8ae1c8070
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-01-38-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-11-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-11-image.png
new file mode 100644
index 0000000000..55b6ba18ea
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-11-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-33-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-33-image.png
new file mode 100644
index 0000000000..5ab81db92f
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-02-33-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-03-59-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-03-59-image.png
new file mode 100644
index 0000000000..9467a94908
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-03-59-image.png differ
diff --git 
a/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-05-02-image.png 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-05-02-image.png
new file mode 100644
index 0000000000..53b74eb720
Binary files /dev/null and 
b/static/imgs/docs3-v2/java-sdk/quickstart/2023-02-08-18-05-02-image.png differ

Reply via email to