有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案