diff --git a/article_parents.html b/article_parents.html index 2640d8dbe..b143e088f 100644 --- a/article_parents.html +++ b/article_parents.html @@ -40,7 +40,7 @@

Redkale 双亲委托

-         ConvertFactory、ResourceFactory、WatchFactory三者的双亲委托模型设计完全一样。本篇只以ConvertFactory为例说明,ConvertFactory的搜索顺序与ClassLoader相反,ClassLoader为了避免类的重复而先加载父加载器后加载子加载器,ConvertFactory为了优先加载自定义的Encoder和Decoder先搜索自身的ConvertFactory,找不到再从父ConvertFactory中搜索。 +         ConvertFactory、ResourceFactory、WatchFactory三者的双亲委托模型设计完全一样。下面以ConvertFactory为例说明,ConvertFactory的搜索顺序与ClassLoader相反,ClassLoader为了避免类的重复而先加载父加载器后加载子加载器,ConvertFactory为了优先加载自定义的Encoder和Decoder先搜索自身的ConvertFactory,找不到再从父ConvertFactory中搜索。

public final <E> Encodeable<W, E> findEncoder(final Type type) {
     Encodeable<W, E> rs = (Encodeable<W, E>) encoders.get(type);
@@ -75,7 +75,26 @@
     if (encoder != null) return encoder;
     return createEncoder(type, clazz);
 }
- +

+         大部分情况下Convert的处理对象会根据JavaBean类自定生成,而有些场景需要覆盖处理类,这样需要子ConvertFactory,如 Convert基本用法 例子中使用JsonFactory.root().createChild()重定义。且与JsonFactory.root()中的定义可以并存,也不会产出冲突。 +

+

+         Redkale可以启动多个协议Server服务(配置文件中含多个server节点),为避免冲突,每个非SNCP的Server的ResourceFactory也是独立的。 +

+
public NodeServer(Application application, Server server) {
+    this.application = application;
+    this.resourceFactory = application.getResourceFactory().createChild();
+    this.server = server;
+    this.logger = Logger.getLogger(this.getClass().getSimpleName());
+}
+

+         双亲委托模型既可让同级子Factory保持独立,也可重用父Factory内的配置,因此在Redkale这种支持多Server、多种配置的场景下很是适合。 +

+
+

+         转载请注明出处:http://redkale.org/article_parents.html +

+