讲师中心 微信公众号
AI工具推荐 视频效率加速

Codex怎么把业务逻辑从控制器中拆出来

浅晨同学_2926

浅晨同学_2926

发布时间:2026-10-12 17:40:00

|

994人浏览过

|

来源于php中文网

原创

Controller只做接收请求、校验参数、调用Service并包装响应三件事;所有业务逻辑须剥离至@Service类,通过接口注入,确保事务、数据库操作等均在Service层实现。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

codex怎么把业务逻辑从控制器中拆出来

要把业务逻辑从控制器中安全剥离,避免后续改一个字段牵出十个类的连锁反应,必须明确 Controller 只做三件事:接收请求、校验参数格式、调用 Service 并包装响应。其余所有计算、状态判断、数据库操作、事务控制,一律不许出现在 Controller 文件里。

第一步:识别并删除 Controller 中的违规代码

打开你的 Controller 类(比如 UserController.java),逐行扫描。凡是出现 userRepository.save()、new User().setXXX()、if (user.getAge() > 18 && user.isVerified())、orderService.calculateTotal() 这类语句,全部剪切出来——它们不属于这里。特别注意:直接 new 对象、手动拼 SQL、调用其他 Service 方法但没加 @Transactional 的,都是高危信号。

这一步做完后,Controller 方法体应只剩 @RequestBody、@PathVariable 解析、Validator.validate()、return ResponseEntity.ok(result) 这类纯传输层代码。

第二步:创建 Service 接口与实现类

在 service 包下新建 UserService.java 接口:

public interface UserService {

    User createUser(User user);

    User updateUser(Long id, UserUpdateDTO dto);

}

再新建 UserServiceImpl.java 实现类,用 @Service 注解声明,并注入 UserRepository:

@Service

public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;

    public UserServiceImpl(UserRepository userRepository) {

        this.userRepository = userRepository;

    }

Codex Imagen
Codex Imagen

通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存

下载

    @Override

    @Transactional

    public User createUser(User user) {

        // 把之前剪切出来的业务逻辑粘贴进来

        return userRepository.save(user);

    }

}

注意:构造器注入是强制要求,不要用 @Autowired 字段注入;@Transactional 必须加在实现类方法上,不能只加在接口里。

第三步:在 Controller 中完成依赖注入与调用

回到 UserController,删掉所有 userRepository 字段和相关 new 操作,改为:

@RestController

@RequestMapping("/api/users")

public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {

        this.userService = userService;

    }

    @PostMapping

    public ResponseEntity create(@Valid @RequestBody User user) {

        User saved = userService.createUser(user);

        return ResponseEntity.status(201).body(saved);

    }

}

这一步操作起来很简单,直接把文件拖进去就行。但务必确认 UserService 是接口类型,不是 UserServiceImpl —— 否则就破坏了面向接口编程原则,后续无法替换实现或 Mock 测试。

第四步:验证分层是否真正生效

① 运行应用,调用 /api/users POST 接口,确认能正常创建用户且返回 201。

② 在 UserServiceImpl 的 createUser 方法第一行加断点,发起请求,观察调试器是否停在 Service 层而非 Controller 层。

③ 尝试在 UserServiceImpl 中抛出 RuntimeException,检查数据库是否回滚 —— 如果没回滚,说明 @Transactional 没生效,大概率是因为你用了接口代理方式但没开启 @EnableTransactionManagement 或者调用发生在同一个 Bean 内部。

④ 删除 UserServiceImpl 类,重新编译。如果 Controller 编译失败,说明依赖注入路径正确;如果还能编译通过,说明你还在 Controller 里偷偷 new 了实现类,立刻修正。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
Codex AI 编程代理与智能开发工作流
Codex AI 编程代理与智能开发工作流

Codex 是一款超越传统代码生成的 AI 编程代理,致力于构建全生命周期的智能开发工作流。通过持久线程保留上下文,支持多智能体并行协作与后台自动化运维。借助沙箱权限控制、Plan/Steer 任务管理机制,Codex 既能自主拆解并执行复杂工程任务,又能让开发者牢牢掌控项目进程。从需求分析、编码测试到代码审查与部署,Codex 将 AI 深度融入研发全链路,极大提升了软件工程的交付效率与质量标准。

514

2026.05.26

Codex API集成与AI编程生态开发
Codex API集成与AI编程生态开发

Codex API 集成是构建下一代 AI 编程生态的核心基石,能通过 API 将强大的代码生成与推理能力无缝接入 VS Code、JetBrains 等主流 IDE 插件,还能将其深度嵌入 CI/CD 流水线,实现自动化的代码审查、单元测试生成与 Bug 修复。结合 Amazon Bedrock 等云平台的托管服务,企业可以灵活打造符合内部安全规范的专属 AI 编程助手。

224

2026.05.26

Codex 模型原理与AI软件工程进阶
Codex 模型原理与AI软件工程进阶

Codex 是基于通用大模型底座,通过海量代码语料与真实 Pull Request 进行专项微调的代码专用模型,能深度理解代码语法树与跨文件依赖,实现从自然语言到高质量工程代码的精准转化。在 AI 软件工程进阶中,Codex 推动了从提示词工程向“驾驭工程(Harness Engineering)”的范式跃迁。

177

2026.05.26

Codex AI编程工具新手指南
Codex AI编程工具新手指南

全面解析Codex AI编程工具的核心原理、功能特点与实际用途,提供适合新手的Codex入门教程、环境配置方法、代码生成演示与常见问题解答,帮助开发者快速掌握AI自动写代码能力,提升编程学习与开发效率。

390

2026.05.27

Codex Agent编程与自主开发能力调优专题
Codex Agent编程与自主开发能力调优专题

PHP中文网为您提供Codex Agent编程与自主开发能力调优专题。针对AI Agent全权委托开发模式,我们为您系统梳理了Harness Engineering(驾驭工程)核心理念,以及涵盖AGENTS.md规范编写、Skills技能配置、Worktree沙盒隔离与多Agent协作架构的实战指南。

228

2026.06.10

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

20

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

0

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Codex 应用程序简介
Codex 应用程序简介

共0课时 | 167人学习

Codex官方文档
Codex官方文档

共0课时 | 0人学习

Buffalo & Goth 官方视频教程
Buffalo & Goth 官方视频教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn