Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userApi': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'userDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Post-processing of merged bean definition failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.synchronization()Ljavax/persistence/SynchronizationType;
以上是报错信息
贴代码
userdao类
package net.sunofbeach.blog.dao;
import net.sunofbeach.blog.pojo.SobUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface UserDao extends JpaRepository<SobUser,String>, JpaSpecificationExecutor<SobUser> {
}
package net.sunofbeach.blog.services.impl;
import lombok.extern.slf4j.Slf4j;
import net.sunofbeach.blog.dao.SettingsDao;
import net.sunofbeach.blog.dao.UserDao;
import net.sunofbeach.blog.pojo.Setting;
import net.sunofbeach.blog.pojo.SobUser;
import net.sunofbeach.blog.response.ResponseResult;
import net.sunofbeach.blog.services.IUserService;
import net.sunofbeach.blog.utils.Constants;
import net.sunofbeach.blog.utils.IdWorker;
import net.sunofbeach.blog.utils.TextUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
@Slf4j
@Service
@Transactional
public class UserServiceImpl implements IUserService {
@Autowired
private IdWorker idWorker; // 注入进来
@Autowired
private UserDao userDao;
@Autowired
private SettingsDao settingsDao;
@Override
public ResponseResult initManagerAccount(SobUser sobUser, HttpServletRequest request) {
// 检查是否已初始化
Setting managerAccountState = settingsDao.findOneByKey(Constants.Settings.MANAGER_ACCOUNT_INIT_STATE);
if(managerAccountState !=null){
return ResponseResult.FAILED("管理员账户已经初始化了");
}
// 检查数据
if(TextUtils.isEmpity(sobUser.getUserName())){
return ResponseResult.FAILED("用户名不能为空");
}
if(TextUtils.isEmpity(sobUser.getPassword())){
return ResponseResult.FAILED("密码不能为空");
}
if(TextUtils.isEmpity(sobUser.getEmail())){
return ResponseResult.FAILED("邮箱不能为空");
}
// 补充数据
sobUser.setId(String.valueOf(idWorker.nextId()));
sobUser.setRoles(Constants.User.ROLE_ADMIN);
sobUser.setAvatar(Constants.User.DEFAULT_AVATER);
sobUser.setState(Constants.User.DEFAULT_STATE);
String remoteAddr = request.getRemoteAddr();
String localAddr = request.getLocalAddr();
log.info("remoteAddr ==>"+remoteAddr);
log.info("localAddr ==>"+localAddr);
sobUser.setLoginIp(remoteAddr);
sobUser.setRegIp(remoteAddr);
sobUser.setCreateTime(new Date());
sobUser.setUpdateTime(new Date());
// 保存到数据库
userDao.save(sobUser);
// 更新已经添加的标记
Setting setting = new Setting();
setting.setId(idWorker.nextId()+"");
setting.setKey(Constants.Settings.MANAGER_ACCOUNT_INIT_STATE);
setting.setCreate_time(new Date());
setting.setUpdate_time(new Date());
setting.setValue("1");
settingsDao.save(setting);
return ResponseResult.SUCCESS("初始化成功");
}
}
你查找一下这个类PersistenceContext,是不是有多个在不同的jar包里了。估计冲突了。