You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/08/08 04:13:36 UTC

[dubbo-website] branch master updated: delete configuration pages from language part

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

liujun 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 5657a89  delete configuration pages from language part
5657a89 is described below

commit 5657a89d9bb42c4d30105c1738e3f19cd2c1051e
Author: ken.lj <ke...@gmail.com>
AuthorDate: Sun Aug 8 12:13:20 2021 +0800

    delete configuration pages from language part
---
 .../languages/java/configuration/annotation.md     |  97 --------------
 .../zh/docs/languages/java/configuration/api.md    | 127 ------------------
 .../languages/java/configuration/config-center.md  | 149 ---------------------
 .../languages/java/configuration/properties.md     |  44 ------
 .../zh/docs/languages/java/configuration/xml.md    |  98 --------------
 5 files changed, 515 deletions(-)

diff --git a/content/zh/docs/languages/java/configuration/annotation.md b/content/zh/docs/languages/java/configuration/annotation.md
deleted file mode 100644
index 63a1469..0000000
--- a/content/zh/docs/languages/java/configuration/annotation.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-type: docs
-title: "注解配置"
-linkTitle: "注解配置"
-weight: 4
-description: "以注解配置的方式来配置你的 Dubbo 应用"
----
-
-{{% alert title="提示" color="primary" %}}
-需要 `2.6.3` 及以上版本支持。 点此查看 [完整示例](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-annotation)
-{{% /alert %}}
-
-
-## 服务提供方
-
-### `Service`注解暴露服务
-
-```java
-@Service
-public class AnnotationServiceImpl implements AnnotationService {
-    @Override
-    public String sayHello(String name) {
-        return "annotation: hello, " + name;
-    }
-}
-```
-    
-### 增加应用共享配置
-
-```properties
-# dubbo-provider.properties
-dubbo.application.name=annotation-provider
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
-```
-
-### 指定Spring扫描路径
-
-```java
-@Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.impl")
-@PropertySource("classpath:/spring/dubbo-provider.properties")
-static public class ProviderConfiguration {
-       
-}
-```
-
-## 服务消费方
-
-### `Reference`注解引用服务
-
-```java
-@Component("annotationAction")
-public class AnnotationAction {
-
-    @Reference
-    private AnnotationService annotationService;
-    
-    public String doSayHello(String name) {
-        return annotationService.sayHello(name);
-    }
-}
-
-```
-    
-### 增加应用共享配置
-
-```properties
-# dubbo-consumer.properties
-dubbo.application.name=annotation-consumer
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.consumer.timeout=3000
-```
-
-### 指定Spring扫描路径
-
-```java
-@Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.action")
-@PropertySource("classpath:/spring/dubbo-consumer.properties")
-@ComponentScan(value = {"org.apache.dubbo.samples.simple.annotation.action"})
-static public class ConsumerConfiguration {
-
-}
-```
-
-### 调用服务
-
-```java
-public static void main(String[] args) throws Exception {
-    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
-    context.start();
-    final AnnotationAction annotationAction = (AnnotationAction) context.getBean("annotationAction");
-    String hello = annotationAction.doSayHello("world");
-}
-```
diff --git a/content/zh/docs/languages/java/configuration/api.md b/content/zh/docs/languages/java/configuration/api.md
deleted file mode 100644
index ba92508..0000000
--- a/content/zh/docs/languages/java/configuration/api.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-type: docs
-title: "API 配置"
-linkTitle: "API 配置"
-weight: 3
-description: "以API 配置的方式来配置你的 Dubbo 应用"
----
-
-API 属性与配置项一对一,各属性含义,请参见:[配置参考手册](../references/xml/),比如:`ApplicationConfig.setName("xxx")` 对应  `<dubbo:application name="xxx" />` [^1]
-
-## 服务提供者
-
-```java
-import org.apache.dubbo.rpc.config.ApplicationConfig;
-import org.apache.dubbo.rpc.config.RegistryConfig;
-import org.apache.dubbo.rpc.config.ProviderConfig;
-import org.apache.dubbo.rpc.config.ServiceConfig;
-import com.xxx.XxxService;
-import com.xxx.XxxServiceImpl;
- 
-// 服务实现
-XxxService xxxService = new XxxServiceImpl();
- 
-// 当前应用配置
-ApplicationConfig application = new ApplicationConfig();
-application.setName("xxx");
- 
-// 连接注册中心配置
-RegistryConfig registry = new RegistryConfig();
-registry.setAddress("10.20.130.230:9090");
-registry.setUsername("aaa");
-registry.setPassword("bbb");
- 
-// 服务提供者协议配置
-ProtocolConfig protocol = new ProtocolConfig();
-protocol.setName("dubbo");
-protocol.setPort(12345);
-protocol.setThreads(200);
- 
-// 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口
- 
-// 服务提供者暴露服务配置
-ServiceConfig<XxxService> service = new ServiceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏
-service.setApplication(application);
-service.setRegistry(registry); // 多个注册中心可以用setRegistries()
-service.setProtocol(protocol); // 多个协议可以用setProtocols()
-service.setInterface(XxxService.class);
-service.setRef(xxxService);
-service.setVersion("1.0.0");
- 
-// 暴露及注册服务
-service.export();
-```
-
-## 服务消费者
-
-```java
-import org.apache.dubbo.rpc.config.ApplicationConfig;
-import org.apache.dubbo.rpc.config.RegistryConfig;
-import org.apache.dubbo.rpc.config.ConsumerConfig;
-import org.apache.dubbo.rpc.config.ReferenceConfig;
-import com.xxx.XxxService;
- 
-// 当前应用配置
-ApplicationConfig application = new ApplicationConfig();
-application.setName("yyy");
- 
-// 连接注册中心配置
-RegistryConfig registry = new RegistryConfig();
-registry.setAddress("10.20.130.230:9090");
-registry.setUsername("aaa");
-registry.setPassword("bbb");
- 
-// 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
- 
-// 引用远程服务
-ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
-reference.setApplication(application);
-reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
-reference.setInterface(XxxService.class);
-reference.setVersion("1.0.0");
- 
-// 和本地bean一样使用xxxService
-XxxService xxxService = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用
-```
-
-## 特殊场景
-
-下面只列出不同的地方,其它参见上面的写法
-
-### 方法级设置
-
-```java
-...
- 
-// 方法级配置
-List<MethodConfig> methods = new ArrayList<MethodConfig>();
-MethodConfig method = new MethodConfig();
-method.setName("createXxx");
-method.setTimeout(10000);
-method.setRetries(0);
-methods.add(method);
- 
-// 引用远程服务
-ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
-...
-reference.setMethods(methods); // 设置方法级配置
- 
-...
-```
-
-### 点对点直连
-
-```java
-
-...
- 
-ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
-// 如果点对点直连,可以用reference.setUrl()指定目标地址,设置url后将绕过注册中心,
-// 其中,协议对应provider.setProtocol()的值,端口对应provider.setPort()的值,
-// 路径对应service.setPath()的值,如果未设置path,缺省path为接口名
-reference.setUrl("dubbo://10.20.130.230:20880/com.xxx.XxxService"); 
- 
-...
-```
-
-[^1]: API使用范围说明:API 仅用于 OpenAPI, ESB, Test, Mock 等系统集成,普通服务提供方或消费方,请采用[XML 配置](../xml)方式使用 Dubbo
diff --git a/content/zh/docs/languages/java/configuration/config-center.md b/content/zh/docs/languages/java/configuration/config-center.md
deleted file mode 100644
index 2e6e346..0000000
--- a/content/zh/docs/languages/java/configuration/config-center.md
+++ /dev/null
@@ -1,149 +0,0 @@
----
-type: docs
-title: "动态配置中心"
-linkTitle: "动态配置中心"
-weight: 2
-description: "Dubbo 2.7 中的动态配置中心"
----
-
-配置中心(v2.7.0)在 Dubbo 中承担两个职责:
-
-1. 外部化配置。启动配置的集中式存储 (简单理解为 dubbo.properties 的外部化存储)。
-2. 服务治理。服务治理规则的存储与通知。
-
-启用动态配置,以 Zookeeper 为例,可查看 [动态配置配置项详解](../../references/xml/dubbo-config-center)
-
-```xml
-<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
-```
-
-或者
-
-```properties
-dubbo.config-center.address=zookeeper://127.0.0.1:2181
-```
-
-或者
-
-```java
-ConfigCenterConfig configCenter = new ConfigCenterConfig();
-configCenter.setAddress("zookeeper://127.0.0.1:2181");
-```
-
-> 为了兼容 2.6.x 版本配置,在使用 Zookeeper 作为注册中心,且没有显示配置配置中心的情况下,Dubbo 框架会默认将此 Zookeeper 用作配置中心,但将只作服务治理用途。
-
-## 外部化配置
-
-外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统如 Apollo, Nacos 等,Dubbo 所做的主要是保证能配合这些系统正常工作。
-
-外部化配置和其他本地配置在内容和格式上并无区别,可以简单理解为 `dubbo.properties` 的外部化存储,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。
-
-```properties
-# 将注册中心地址、元数据中心地址等配置集中管理,可以做到统一环境、减少开发侧感知。
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.registry.simplified=true
-
-dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
-
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
-
-dubbo.application.qos.port=33333
-```
-
-- 优先级
-
-    外部化配置默认较本地配置有更高的优先级,因此这里配置的内容会覆盖本地配置值,关于 [各配置形式间的覆盖关系](../configuration-load-process) 有单独一章说明,你也可通过以下选项调整配置中心的优先级:
-
-    ```properties
-    -Ddubbo.config-center.highest-priority=false
-    ```
-
-- 作用域
-
-    外部化配置有全局和应用两个级别,全局配置是所有应用共享的,应用级配置是由每个应用自己维护且只对自身可见的。当前已支持的扩展实现有Zookeeper、Apollo。
-
-
-#### Zookeeper
-
-```xml
-<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
-```
-
-默认所有的配置都存储在 `/dubbo/config` 节点,具体节点结构图如下:
-
-![zk-configcenter.jpg](/imgs/user/zk-configcenter.jpg)
-
-- namespace,用于不同配置的环境隔离。
-- config,Dubbo约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
-- dubbo/application,分别用来隔离全局配置、应用级别配置:dubbo是默认group值,application对应应用名
-- dubbo.properties,此节点的node value存储具体配置内容
-
-
-
-#### Apollo
-
-```xml
-<dubbo:config-center protocol="apollo" address="127.0.0.1:2181"/>
-```
-
-Apollo中的一个核心概念是命名空间 - namespace(和上面zookeeper的namespace概念不同),在这里全局和应用级别配置就是通过命名空间来区分的。
-
-默认情况下,Dubbo会从名叫`dubbo`(由于 Apollo 不支持特殊后缀 `.properties` )的命名空间中读取全局配置(`<dubbo:config-center namespace="your namespace">`)
-
-![apollo-configcenter-dubbo.png](/imgs/user/apollo-configcenter-dubbo.png)
-
-由于 Apollo 也默认将会在 `dubbo` namespace 中存储服务治理规则(如路由规则),建议通过单独配置 `group` 将服务治理和配置文件托管分离开,以 XML 配置方式为例:
-```xml
-<dubbo namespace="governance" group ="dubbo"/>
-```
-这里,服务治理规则将存储在 governance namespace,而配置文件将存储在 dubbo namespace,如下图所示:
-![apollo-configcenter-governance-dubbo.png](/imgs/user/apollo-configcenter-governance-dubbo.png)
-
-> 关于文件配置托管,相当于是把 `dubbo.properties` 配置文件的内容存储在了 Apollo 中,应用通过关联共享的 `dubbo` namespace 继承公共配置,
->  应用也可以按照 Apollo 的做法来覆盖个别配置项。
-
-
-#### 自己加载外部化配置
-
-所谓 Dubbo 对配置中心的支持,本质上就是把 `.properties` 从远程拉取到本地,然后和本地的配置做一次融合。理论上只要 Dubbo 框架能拿到需要的配置就可以正常的启动,它并不关心这些配置是自己加载到的还是应用直接塞给它的,所以Dubbo还提供了以下API,让用户将自己组织好的配置塞给 Dubbo 框架(配置加载的过程是用户要完成的),这样 Dubbo 框架就不再直接和 Apollo 或 Zookeeper 做读取配置交互。
-
-```java
-// 应用自行加载配置
-Map<String, String> dubboConfigurations = new HashMap<>();
-dubboConfigurations.put("dubbo.registry.address", "zookeeper://127.0.0.1:2181");
-dubboConfigurations.put("dubbo.registry.simplified", "true");
-
-//将组织好的配置塞给Dubbo框架
-ConfigCenterConfig configCenter = new ConfigCenterConfig();
-configCenter.setExternalConfig(dubboConfigurations);
-```
-
-
-
-## 服务治理
-
-#### Zookeeper
-
-默认节点结构:
-
-![zk-configcenter-governance](/imgs/user/zk-configcenter-governance.jpg)
-
-- namespace,用于不同配置的环境隔离。
-- config,Dubbo 约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
-- dubbo,所有服务治理规则都是全局性的,dubbo 为默认节点
-- configurators/tag-router/condition-router,不同的服务治理规则类型,node value 存储具体规则内容
-
-
-
-#### Apollo
-
-所有的服务治理规则都是全局性的,默认从公共命名空间 `dubbo` 读取和订阅:
-
-![apollo-configcenter-governance.jpg](/imgs/user/apollo-configcenter-governance.jpg)
-
-不同的规则以不同的 key 后缀区分:
-
-- configurators,[覆盖规则](../../examples/config-rule)
-- tag-router,[标签路由](../../examples/routing-rule)
-- condition-router,[条件路由](../../examples/routing-rule)
\ No newline at end of file
diff --git a/content/zh/docs/languages/java/configuration/properties.md b/content/zh/docs/languages/java/configuration/properties.md
deleted file mode 100644
index 1d5da56..0000000
--- a/content/zh/docs/languages/java/configuration/properties.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-type: docs
-title: "属性配置"
-linkTitle: "属性配置"
-weight: 2
-description: "以属性配置的方式来配置你的 Dubbo 应用"
----
-
-如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 `dubbo.properties` 作为默认配置。
-
-Dubbo 可以自动加载 classpath 根目录下的 dubbo.properties,但是你同样可以使用 JVM 参数来指定路径:`-Ddubbo.properties.file=xxx.properties`。
-
-# 映射规则
-
-可以将 xml 的 tag 名和属性名组合起来,用 ‘.’ 分隔。每行一个属性。
-
-* `dubbo.application.name=foo` 相当于 `<dubbo:application name="foo" />` 
-* `dubbo.registry.address=10.20.153.10:9090` 相当于 `<dubbo:registry address="10.20.153.10:9090" /> `  
-
-如果在 xml 配置中有超过一个的 tag,那么你可以使用 ‘id’ 进行区分。如果你不指定 id,它将作用于所有 tag。
-
-* `dubbo.protocol.rmi.port=1099` 相当于 `<dubbo:protocol id="rmi" name="rmi" port="1099" /> `
-* `dubbo.registry.china.address=10.20.153.10:9090` 相当于 `<dubbo:registry id="china" address="10.20.153.10:9090" />`
-
-如下,是一个典型的 dubbo.properties 配置样例。
-
-```properties
-dubbo.application.name=foo
-dubbo.application.owner=bar
-dubbo.registry.address=10.20.153.10:9090
-```
-
-## 重写与优先级
-
-![properties-override](/imgs/user/dubbo-properties-override.jpg)
-
-优先级从高到低:
-
-* JVM -D 参数:当你部署或者启动应用时,它可以轻易地重写配置,比如,改变 dubbo 协议端口;
-* XML:XML 中的当前配置会重写 dubbo.properties 中的;
-* Properties:默认配置,仅仅作用于以上两者没有配置时。
-
-1. 如果在 classpath 下有超过一个 dubbo.properties 文件,比如,两个 jar 包都各自包含了 dubbo.properties,dubbo 将随机选择一个加载,并且打印错误日志。
-2. 如果 `id` 没有在 `protocol` 中配置,将使用 `name` 作为默认属性。
diff --git a/content/zh/docs/languages/java/configuration/xml.md b/content/zh/docs/languages/java/configuration/xml.md
deleted file mode 100644
index e2bbbe8..0000000
--- a/content/zh/docs/languages/java/configuration/xml.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-type: docs
-title: "XML 配置"
-linkTitle: "XML 配置"
-weight: 1
-description: "以 XML 配置的方式来配置你的 Dubbo 应用"
----
-
-有关 XML 的详细配置项,请参见:[配置参考手册](../../references/xml)。如果不想使用 Spring 配置,而希望通过 API 的方式进行调用,请参见:[API配置](../api)。想知道如何使用配置,请参见:[快速启动](../../quick-start)。
-
-请在此查看文档描述的[完整示例](https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-basic)
-
-## provider.xml 示例
-
-```xml
-<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"
-       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">
-    <dubbo:application name="demo-provider"/>
-    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
-    <dubbo:protocol name="dubbo" port="20890"/>
-    <bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
-    <dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>
-</beans>
-```
-
-## consumer.xml示例
-
-```xml
-<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"
-       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">
-    <dubbo:application name="demo-consumer"/>
-    <dubbo:registry group="aaa" address="zookeeper://127.0.0.1:2181"/>
-    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
-</beans>
-```
-
-所有标签都支持自定义参数,用于不同扩展点实现的特殊配置,如:
-
-```xml
-<dubbo:protocol name="jms">
-    <dubbo:parameter key="queue" value="your_queue" />
-</dubbo:protocol>
-```
-
-或: [^1]
-
-```xml
-<beans xmlns="http://www.springframework.org/schema/beans"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-    xmlns:p="http://www.springframework.org/schema/p"
-    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">  
-    <dubbo:protocol name="jms" p:queue="your_queue" />  
-</beans>
-```
-
-## 配置之间的关系
-  
-![dubbo-config](/imgs/user/dubbo-config.jpg)
-
-标签  | 用途 | 解释
-------------- | ------------- | -------------
-`<dubbo:service/>` | 服务配置  | 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心
-`<dubbo:reference/>` [^2]  | 引用配置  | 用于创建一个远程服务代理,一个引用可以指向多个注册中心
-`<dubbo:protocol/>`  | 协议配置  | 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
-`<dubbo:application/>`  | 应用配置  | 用于配置当前应用信息,不管该应用是提供者还是消费者
-`<dubbo:module/>`  | 模块配置  | 用于配置当前模块信息,可选
-`<dubbo:registry/>`  | 注册中心配置 | 用于配置连接注册中心相关信息
-`<dubbo:monitor/>`  | 监控中心配置  | 用于配置连接监控中心相关信息,可选
-`<dubbo:provider/>`  | 提供方配置  | 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
-`<dubbo:consumer/>`  | 消费方配置  | 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
-`<dubbo:method/>`  | 方法配置  | 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
-`<dubbo:argument/>`  | 参数配置  | 用于指定方法参数配置
-
-
-## 不同粒度配置的覆盖关系
-
-以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:
-
-* 方法级优先,接口级次之,全局配置再次之。
-* 如果级别一样,则消费方优先,提供方次之。
-
-其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。
-
-![dubbo-config-override](/imgs/user/dubbo-config-override.jpg)
-
-(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。
-
-理论上 ReferenceConfig 中除了`interface`这一项,其他所有配置项都可以缺省不配置,框架会自动使用ConsumerConfig,ServiceConfig, ProviderConfig等提供的缺省配置。
-
-[^1]: `2.1.0` 开始支持,注意声明:`xmlns:p="http://www.springframework.org/schema/p"`
-[^2]: 引用缺省是延迟初始化的,只有引用被注入到其它 Bean,或被 `getBean()` 获取,才会初始化。如果需要饥饿加载,即没有人引用也立即生成动态代理,可以配置:`<dubbo:reference ... init="true" />`