gpt4 book ai didi

java - 什么属于Controller层,什么属于Service层?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:59 24 4
gpt4 key购买 nike

我有一个简单的 Spring-Boot Restful 应用程序。我有一个 Controller 层和一个存储层,但没有服务层。让我向您展示我的 Controller 方法之一:

@RequestMapping(value = "users/{id}", method = RequestMethod.GET)
public Resource<UserResource> get(@PathVariable Long id) throws NotFoundException {
log.info("Invoked method: get with ID: " + id);
log.warn("Searching for user with ID " + id);
User user = userRepository.findOne(id);
if (user == null){
log.error("Unexpected error, User with ID " + id + " not found");
throw new NotFoundException("User with ID " + id + " not found");
}
log.info("User found. Sending request back. ID of user is " + id);
return new Resource<UserResource>(getUserResource(user));
}

因为我没有服务层,我的 Controller 为我做业务逻辑。现在我想实现服务层。我的 Controller 应该/不应该做什么?

我的服务层(我现在想实现)是否应该完成所有工作,而我的 Controller 只将请求委托(delegate)给服务层?

最佳答案

问问自己:如果我想为不同的 View /传输/协议(protocol)呈现结果,需要更改什么?那属于 Controller 。

Controller 层中的代码应该只与将服务层之间的业务输入/输出映射到 View /传输/协议(protocol)(视情况而定)有关。这可能(也可能不)包括将业务数据映射到 JSON(您的业务/服务层直接使用 JSON 或类似的东西并不是不合理的)、XML、HTML 或您的任何内容类型(对于 HTTP)。

虽然您的 Controller 可能感觉很轻,但请记住,Spring 对 Controller 的支持完成了大部分工作 - 将这样一个“简单”的 Controller 想象成一个 anchor ,您的框架可以识别并挂起所有较重的锅炉-盘子,代码关闭,对您有利。

关于java - 什么属于Controller层,什么属于Service层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com