記錄:使用IDEA編輯Spring配置文件profile屬性時產生的命名重複問題

  寫在前面:
java

  該問題僅僅與IDE相關,不影響應用的正常運行。在Spring Tool Suite中不存在該問題,而IDEA中會體現出來。spring

 

  在使用IDEA建立了一個Spring的配置文件,其中指定了profile屬性,在不一樣的profile下有同名Bean其報命名重複(下圖紅色部分)。ide

  

 wKiom1V9b3mT0iySAADpEaVV-WE918.jpg


  使用程序測試,發現是正常了,因而判斷是IDEA作了一些手腳。spring-boot


  這個問題產生的緣由是該Spring的配置是本身直接從外部Copy或者建立一個xml文件編輯的,並無添加了項目模塊的Spring Application Context設置中去,所以IDEA給出了命名衝突的提示,這裏猜想其只是單純的判斷Id的惟一性,若是經過beans.xsd去作校驗應該是沒有問題的。下面解決的辦法是設置模型的相關信息。測試


wKioL1V9chmy7t1aAAK4sMByZ3U056.jpg


編輯模塊spring-boot-demo的Application Context,將spring-context.xml文件添加到 Spring Application Context中去。 這時候查看spring-context.xml文件是IDEA才承認該配置是Spring的配置,同提示選擇profile。ui


wKioL1V9crrSjsI9AAGz8I0YVj0284.jpg


 選擇profile dev以後,IDEA友好的將非活動的profile以灰色呈現,不過具體應用中仍然須要指定活動的profile 以下代碼片斷所示.spa


System.setProperty("spring.profiles.active", "product");
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
List<String> list = (List<String>) ctx.getBean("a");
for (String v : list) {
    System.out.println(v);
}


  另外更加beans-xsd定義在Beans節點下嵌套Beans須要放置在文檔最後。定義以下:xml

  wKioL1V9eqWwkXR9AAF57zr_Qh0545.jpg


  這是強迫症嗎?!。blog

  IDEA與Spring高度集成,其Spring Application Context的配置文件進行管理也是情理之中,而且有其價值所在,好比在單獨測試某一個ApplicationContext,或者某一模塊。文檔

相關文章
相關標籤/搜索