在自己搭建 spring boot 集成 jta+atomikos 项目的时候遇到一个特别奇怪的问题。
启动项目报错:
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'cmUserService' for bean class [com.hcg.distributedtx.cm.service.CmUserService] conflicts with existing, non-compatible bean definition of same name and class [com.hcg.distributedtx.cm.service.impl.CmUserServiceImpl]
但是我做各种检查
@Service("cmUserService")
public class CmUserServiceImpl implements CmUserService{
@Autowired
private CmUserMapper cmUserMapper;
@Override
@Transactional
public void saveUser(User user) {
cmUserMapper.insert(user);
int i = 1/0;
// cmUserMapper.addUser(user.getUid(),user.getNickname(),user.getName(),user.getPassword(),user.getSalt(), user.getMobile());
}
}
log日志说我的实现类中已经有个 cmServiceimpl 实现类中已经创建了一个相同名字的接口,但这种命名就是继承,怎么会创建呢,我不是很明白。
以及 此项目下的其他包中没有与此名称重复的文件。在别的项目当中,这种调用方式根本没有问题。
最后不得已改名字吧
@Service("cmUserService")
public class CmUserServiceImpl implements CmUService {
@Autowired
private CmUserMapper cmUserMapper;
@Override
@Transactional
public void saveUser(User user) {
cmUserMapper.insert(user);
int i = 1/0;
// cmUserMapper.addUser(user.getUid(),user.getNickname(),user.getName(),user.getPassword(),user.getSalt(), user.getMobile());
}
}
最后还真不报错了,各位大神如果看到这篇文章,帮忙留言解决下我的困惑