寫在前面:
java
該問題僅僅與IDE相關,不影響應用的正常運行。在Spring Tool Suite中不存在該問題,而IDEA中會體現出來。spring
在使用IDEA建立了一個Spring的配置文件,其中指定了profile屬性,在不一樣的profile下有同名Bean其報命名重複(下圖紅色部分)。ide
使用程序測試,發現是正常了,因而判斷是IDEA作了一些手腳。spring-boot
這個問題產生的緣由是該Spring的配置是本身直接從外部Copy或者建立一個xml文件編輯的,並無添加了項目模塊的Spring Application Context設置中去,所以IDEA給出了命名衝突的提示,這裏猜想其只是單純的判斷Id的惟一性,若是經過beans.xsd去作校驗應該是沒有問題的。下面解決的辦法是設置模型的相關信息。測試
編輯模塊spring-boot-demo的Application Context,將spring-context.xml文件添加到 Spring Application Context中去。 這時候查看spring-context.xml文件是IDEA才承認該配置是Spring的配置,同提示選擇profile。ui
選擇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
這是強迫症嗎?!。blog
IDEA與Spring高度集成,其Spring Application Context的配置文件進行管理也是情理之中,而且有其價值所在,好比在單獨測試某一個ApplicationContext,或者某一模塊。文檔