<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have searched the <a href="https://github.com/apache/incubator-dubbo/issues">issues</a> of this repository and believe that this is not a duplicate.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> I have checked the <a href="https://github.com/apache/incubator-dubbo/blob/master/FAQ.md">FAQ</a> of this repository and believe that this is not a duplicate.</li>
</ul>
<h3 dir="auto">Details</h3>
<p dir="auto">For now on, Dubbo does not support to resolve all placeholders from property value from any <code class="notranslate">PropertySource</code>, thus it will impact Dubbo Spring Boot's externalization configuration, like this issue :</p>
<ul dir="auto">
<li><a href="https://github.com/apache/incubator-dubbo-spring-boot-project/issues/249" data-hovercard-type="issue" data-hovercard-url="/apache/dubbo-spring-boot-project/issues/249/hovercard">Can provider boot features external config placeholders in properties?</a></li>
</ul>
<p dir="auto">What's more, Dubbo's <code class="notranslate">PropertySourcesUtils</code> will be removed and replaced by <a href="https://github.com/alibaba/spring-context-support">Alibaba's spring-context-support</a>'s <a href="https://github.com/alibaba/spring-context-support/blob/1.0.1/src/main/java/com/alibaba/spring/util/PropertySourcesUtils.java"><code class="notranslate">PropertySourcesUtils</code></a></p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I have searched the <a href="https://github.com/apache/incubator-dubbo/issues">issues</a> of this repository and believe that this is not a duplicate.</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> I have checked the <a href="https://github.com/apache/incubator-dubbo/blob/master/FAQ.md">FAQ</a> of this repository and believe that this is not a duplicate.</li>
</ul>
<h3 dir="auto">Environment</h3>
<ul dir="auto">
<li>Dubbo version: 2.5.10</li>
<li>Operating System version: win10</li>
<li>Java version: 1.8</li>
</ul>
<h3 dir="auto">Step to reproduce this issue</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="    `public class Entity implements Serializable {

     private static final long serialVersionUID = 187648346954430294L;

     private List&lt;Integer&gt; list1 = new CopyOnWriteArrayList&lt;&gt;();
     private List&lt;Integer&gt; list2 = new CopyOnWriteArrayList&lt;&gt;();

     public List&lt;Integer&gt; getList1() {
         return list1;
     }

     public List&lt;Integer&gt; getList2() {
         return list2;
     }
 }`

    `public static void main(String[] args) throws IOException {
    Entity entity = new Entity();
    // 此时两个 CopyOnWriteArrayList 不同
    System.out.println(entity.getList1() == entity.getList2());

    // 序列化
    OutputStream outputStream = new FileOutputStream(&quot;dubboSerializer&quot;);
    GenericObjectOutput objectOutput = new GenericObjectOutput(outputStream);
    objectOutput.writeObject(entity);
    objectOutput.flushBuffer();

    // 反序列化
    GenericObjectInput input = new GenericObjectInput(new FileInputStream(&quot;dubboSerializer&quot;));
    Entity obj1 = (Entity) input.readObject();
    // 此时两个 CopyOnWriteArrayList 相同????????????????????????
    System.out.println(obj1.getList1() == obj1.getList2());
    }`"><pre class="notranslate"><code class="notranslate">    `public class Entity implements Serializable {

     private static final long serialVersionUID = 187648346954430294L;

     private List&lt;Integer&gt; list1 = new CopyOnWriteArrayList&lt;&gt;();
     private List&lt;Integer&gt; list2 = new CopyOnWriteArrayList&lt;&gt;();

     public List&lt;Integer&gt; getList1() {
         return list1;
     }

     public List&lt;Integer&gt; getList2() {
         return list2;
     }
 }`

    `public static void main(String[] args) throws IOException {
    Entity entity = new Entity();
    // 此时两个 CopyOnWriteArrayList 不同
    System.out.println(entity.getList1() == entity.getList2());

    // 序列化
    OutputStream outputStream = new FileOutputStream("dubboSerializer");
    GenericObjectOutput objectOutput = new GenericObjectOutput(outputStream);
    objectOutput.writeObject(entity);
    objectOutput.flushBuffer();

    // 反序列化
    GenericObjectInput input = new GenericObjectInput(new FileInputStream("dubboSerializer"));
    Entity obj1 = (Entity) input.readObject();
    // 此时两个 CopyOnWriteArrayList 相同????????????????????????
    System.out.println(obj1.getList1() == obj1.getList2());
    }`
</code></pre></div>
<p dir="auto">说明: 将 CopyOnWriteArrayList 换成 ArrayList 时 没有此问题.</p>