记录:使用IDEA编辑Spring配置文件profile属性时产生的命名重复问题

本文讨论了在使用IDEA创建Spring配置文件时遇到的命名冲突问题,解释了原因并提供了解决方法。重点在于配置文件的正确添加方式及如何通过设置profile来区分不同环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  写在前面:

  该问题仅仅与IDE相关,不影响应用的正常运行。在Spring Tool Suite中不存在该问题,而IDEA中会体现出来。

 

  在使用IDEA创建了一个Spring的配置文件,其中指定了profile属性,在不同的profile下有同名Bean其报命名重复(下图红色部分)。

  

 wKiom1V9b3mT0iySAADpEaVV-WE918.jpg


  使用程序测试,发现是正常了,于是判断是IDEA做了一些手脚。


  这个问题产生的原因是该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。


wKioL1V9crrSjsI9AAGz8I0YVj0284.jpg


 选择profile dev之后,IDEA友好的将非活动的profile以灰色呈现,不过具体应用中仍然需要指定活动的profile 如下代码片段所示.


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需要放置在文档最后。定义如下:

  wKioL1V9eqWwkXR9AAF57zr_Qh0545.jpg


  这是强迫症吗?!。

  IDEA与Spring高度集成,其Spring Application Context的配置文件进行管理也是情理之中,并且有其价值所在,比如在单独测试某一个ApplicationContext,或者某一模块。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值