【问题标题】:Spring Service name conflicting with Interface nameSpring Service 名称与接口名称冲突
【发布时间】:2018-06-04 10:02:36
【问题描述】:

我有一个接口名称

public interface ScoreDao {

   public int storeScore(OverallScore overallScore);

   public void storeIndividualScore(ScoreTO scoreTO);
}

实现类如下

@Repository("scoreDao")
public class ScoreDaoImpl implements ScoreDao {
   @Override
   public int storeScore(OverallScore overallScore) {
      //Implementation 
   }
   @Override
   public void storeIndividualScore(ScoreTO scoreTO){
       //Implementation
   }
}

调用者正在使用如下服务

@Service("scoreService")
public class scoreServiceImpl implements IScoreService {
   @Autowired
   private ScoreDao scoreDao;

   @Override
   public int storeScore(OverallScore overallScore) {
      return scoreDao.storeOverallScore(overallScore);
   }

   @Override
   public void storeIndividualScore(ScoreTO scoreTO) {
      scoreDao.storeIndividualScore(scoreTO);
   }
}

我使用的是 spring 4.x,在部署时出现如下 bean 冲突错误。

引起:java.lang.RuntimeException: org.springframework.context.annotation.ConflictingBeanDefinitionException: bean 类 [ScoreDao] 的注解指定的 bean 名称“ScoreDao” 与现有的、不兼容的同名 bean 定义冲突 和类 [ScoreDaoImpl]

当我将接口名称更改为 IScoreDao 时,它正在工作。是不是因为服务名@Repository("scoreDao") 和接口名一样?

【问题讨论】:

    标签: java spring spring-annotations


    【解决方案1】:

    简单的答案是是的,这是因为你有一个名为ScoreDao 的接口并且你将它实现为@Repository("scoreDao")

    两种解决方法:

    1. ScoreDao重命名为其他名称

    2. @Repository("scoreDao") 更改为 @Repository 以便使用默认名称

    【讨论】:

    • @samba 对不起,我不能完全理解你刚才的回复
    • 即使,如果我没有在 Repository 中指定名称并使用 like blow 仍然会收到错误 Repository public class ScoreDaoImpl implements ScoreDao {} Autowired private ScoreDao scoreDao;当我这样使用时,出现以下错误没有定义 [ScoreDao] 类型的限定 bean:预期的单个匹配 bean 但找到 2:scoreDaoImpl,scoreDao
    • @samba,很奇怪,可以添加你的xml配置代码吗?
    【解决方案2】:

    还有另一种解决方案在您的接口上提及@Repository,这样您就不需要在您的实现类中提及,因为您实现了该接口。因此它会使用接口名称自动创建 bean。

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      相关资源
      最近更新 更多