У меня есть имя интерфейса
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);
}
}
IЯ использую Spring 4.x, при развертывании я получаю ошибку конфликта компонентов, как показано ниже.
Причина: java.lang.RuntimeException: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-указанное имя компонента 'ScoreDao' для класса компонента [ScoreDao] конфликтует с существующим несовместимым определением компонента с тем же именем и классом [ScoreDaoImpl]
Когда я изменяю имя интерфейса на IScoreDao, оно работает,Это из-за того, что имя службы @Repository ("scoreDao") совпадает с именем интерфейса?