java Spring事务,EntityManager生命周期
我正在用spring框架开发一个项目。 我有以下体系结构:所有数据库代码都在dao类中,所有应用程序逻辑都在服务类中,http请求使用spring mvc rest控制器处理
@Repository
public class UserDao {
@PersistenceContext
private EntityManager em;
public void editUser(User user) {
...
}
}
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Transactional
public void editUser(User user) {
...
}
}
@RestController
@RequestMapping(value = "/UserCtrl", produces = "application/json;charset=UTF-8")
public class UserCtrl {
private static final Logger logger = LogManager.getLogger(AppConfig.LOGGER_NAME);
@Autowired
private ApplicationContext appContext;
@RequestMapping(value = "/editUser")
public ActionResult editUser(@ModelAttribute User user) {
ActionResult rslt = new ActionResult();
try {
UserService userService = appContext.getBean(UserService.class);
userService.editUser(user);
rslt.setSuccess(true);
} catch (Exception ex) {
logger.error("editUser", ex);
rslt.setSuccess(false);
}
return rslt;
}
}
这段代码工作正常。 我无法理解的一件事是,当EntityManager仅注入UserDao类时,UserService bean的aop代理如何启动事务。有人能解释一下这是如何工作的,以及spring框架是如何管理EntityManager生命周期的吗
感谢您的帮助
共 (0) 个答案