No qualifying bean of type [java.lang.String] is defined: expected single matching bean but found 2

墨蓝 2023-10-03 18:31 80阅读 0赞

错误信息:

  1. No qualifying bean of type [java.lang.String] is defined: expected single matching bean but found 2: appclientApplication,slfclientApplication

具体场景:
service

  1. @Resource
  2. private String appclientApplicationName;
  3. @Resource
  4. private String slfclientApplicationName;

xml

  1. <bean id="appclientApplicationName " class="java.lang.String">
  2. <constructor-arg value="${Application}"/>
  3. </bean>
  4. <!-- 图片样式名 -->
  5. <bean id="slfclientApplicationName " class="java.lang.String">
  6. <constructor-arg value="${Application}"/>
  7. </bean>

结果在项目启动时报错:

  1. No qualifying bean of type [java.lang.String] is defined: expected single matching bean but found 2: appclientApplication,slfclientApplication

原因:
因为我在使用@Resource注解时,并没有指定name属性,所以spring通过反射机制使用byName自动注入策略,将配置文件的value值注入了,而不是id值,这就导致spring找到了两个同样的value值,无法选择注入哪一个,最终报错。

解决方案通过指定name属性:

  1. @Resource(name="appclientApplicationName")
  2. private String appclientApplication;
  3. @Resource(name="slfclientApplicationName")
  4. private String slfclientApplication;

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读