Java基础、中级、高级、架构面试资料

Java 氛围编程实战,5 分钟写完 CRUD 接口 + 单元测试,测试覆盖率 100%

JAVA herman 8浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

氛围编程在 2025 年极为流行,以至于不少程序员出去面试,必谈氛围编程。

这不,最近就有网友私信我,说让我写写氛围编程。这期中不少人还不知道如何入门,也有人已经魔怔了,觉得程序员都可以裁掉了……

不管别人如何理解,但我觉得氛围编程并不是一个高大尚的东西。只要你开始用了,那你就已经在路上了。下面,我将抽出一点时间,深入探讨一下什么是氛围编程?它的起源?以及如何利用氛围编程在 Java 项目中实践。

我这里特别准备了 3 个从零开始的实战案例,尽量让大家 5 分钟上手!

什么是氛围编程?

以前我们是面向经验编程,面向百度编程,编写对象编程。现在又流行了一个氛围编程,那什么是氛围编程?为什么它如此火爆?

这一切都要从 Andrej Karpathy 等老外程序员说起了。

氛围编程的核心定义

氛围编程,英文称为 Vibe Coding,具体是谁第一个这么叫的,不好查证。也有人说是由 OpenAI 联合创始人、前特斯拉 AI 负责人Andrej Karpathy在 2025 年 2 月首次提出的编程范式。我们姑且也就这样认为吧。

它的核心理念是:开发者通过自然语言描述意图(“氛围”),由 AI 负责生成、完善和调试代码,从而将注意力从代码细节转移到创意和架构设计上

这里的氛围,就是 Vibe 的直译。我认为这个词这样翻译一点也不好。不如叫做描述性编程会话编程意图编程等,这个氛围编程,太过陌生,这个词就能拦住不少人。

与传统编码相比,我认为氛围编程有四大核心特征。

  • 意图驱动:用自然语言描述需求,而非编写精确语法
  • AI 作为执行代理:AI 承担编码职责,开发者转为产品经理 + 架构师角色
  • 信任运行:通过执行结果验证代码,而非逐行审查
  • 快速迭代:“描述-生成-运行-反馈”的高速循环

正如 Karpathy 所说:“使用现代 AI 工具编码,并不是真正的编码,我只是看到一些事物,并对它们进行描述,然后运行 AI 工具,最后复制粘贴,它大部分都能正确实现。”

技术演进历程

氛围编程并非凭空出现,而是 AI 技术发展的必然结果。

  • 2010 年代:低代码/无代码平台萌芽
  • 2021 年:GitHub Copilot 开启 AI 代码助手时代
  • 2022 年底:ChatGPT 标志着会话式编码时代到来
  • 2025 年:氛围编程从边缘实验变为主流趋势

有人预估,到 2025 年 12 月,基于氛围编程概念的 AI 编程工具活跃用户已超 1000 多万,年化订阅收入超过 1 亿美元甚至更多的厂商不在少数!

小白如何开始氛围编程?

或者说产品、测试、程序员等如何入门氛围编程?

不要认为只有程序员需要会氛围编程,测试等也需要的,尤其是自动化、安全性等领域的测试。产品人员也需要,哪怕是写写文档等。

环境准备三步走

对于 Java 开发者来说,开启氛围编程之旅只需简单三步。

  1. 选择 IDE 插件等工具:安装阿里 Qoder、GitHub Copilot 或通义灵码、Trae、CodeBuddy 等
  2. 配置 API 密钥或登录账号:连接大模型服务(如通义千问、GPT-4 等)
  3. 创建或打开项目:从简单的 Maven/Gradle Java 项目开始

Vibe Coding 提示词黄金法则

氛围编程的成败关键在于提示词质量。经过多数社区的实践,我总结出以下五大原则

原则一:清晰描述意图。比如,看下面这个对比。

不好:“写一个排序”
好:“创建一个 Java 工具类,包含快速排序算法,要求:1. 支持泛型 2. 有详细的 Javadoc 注释 3. 包含单元测试”

原则二:提供充分的上下文,可以具体具体再具体些。

不好:“连接数据库”
好:“在 Spring Boot 项目中,创建一个 UserRepository 接口,使用 JPA 连接 MySQL 数据库,表结构包含 id、username、email 三个字段,需要实现根据 email 查询用户的方法”

原则三:迭代优化。不要一口吃个胖子。

1. 先生成基础版本
2. 运行测试,发现问题
3. 反馈错误信息给 AI:“运行报错 NullPointerException,在第 23 行,请修复”
4. AI 自动修正并优化

原则四:结构化表达。

使用以下模板:
【角色】你是一位经验丰富的 Java 架构师
【任务】创建一个 RESTful API
【要求】1. 使用 Spring Boot 3.x 2. 返回 JSON 格式 3. 包含 Swagger 文档
【约束】避免使用 Deprecated API

原则五:文档优先。

对于复杂的业务功能或项目,可以让 AI 先生成需求文档或项目目录、功能文档等。再让 AI 根据对应的文档,实现对应的模块或功能。这一条其实和原则二类似,提供充分的上下文。

即使再不济,让 AI 写写程序员厌烦的文档,也没问题吧。

3 个 Java 案例从 0 到 1

这里以阿里 Qoder 为例进行实战。或者我就不截图了,因为每个 AI 编程工具都大差不差,核心是氛围编程,工具不是唯一。

Qoder 核心功能介绍

阿里 Qoder 是氛围编程领域的代表性工具,提供四大核心能力。

  • Spec 驱动的 Quest Mode:通过规格说明驱动 AI 完成任务。符合原则二和原则五。
  • Repo Wiki:构建项目知识库,增强 AI 上下文理解。同上。
  • 云端沙箱:安全执行和测试生成的代码。
  • 多智能体并行:多个 AI Agent 协作完成复杂任务等。

案例 1

接下来,我们利用 5 分钟左右的时间,创建一个 Spring Boot RESTful API。

场景:快速搭建用户管理系统 API。

操作步骤如下。

一、在 Qoder 中打开新项目,输入提示词。

创建一个 Spring Boot 3.x 项目,包含 User 实体类(id, name, email, createdAt),
使用 JPA 进行数据持久化,提供完整的 CRUD RESTful API,
使用 H2 内存数据库,自动生成 Swagger API 文档

二、Qoder 自动生成项目结构和代码。

// User.java
@Entity
@Table(name = "users")
@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(unique = true, nullable = false)
    private String email;

    @Column(name = "created_at")
    private LocalDateTime createdAt;
}

// UserController.java
@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        return ResponseEntity.ok(userService.findAll());
    }

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        return ResponseEntity.status(HttpStatus.CREATED).body(userService.save(user));
    }
}

三、运行验证。

mvn spring-boot:run,访问http://localhost:8080/swagger-ui.html

最终的效果是,传统方式需要 30 分钟,使用 Qoder 仅 3 分钟不到即可完成!

案例 2

现有项目,智能工具类生成。比如,Java 日期处理工具。

场景:老项目中需要处理各种日期格式转换。

提示词设计如下。

创建一个名为 DateTimeUtils 的 Java 工具类,要求。

1. 包含字符串转 LocalDateTime 的方法,支持 yyyy-MM-dd HH:mm:ss 和 ISO 8601 两种格式
2. 包含计算两个日期相差天数的方法
3. 包含获取本月第一天和最后一天的方法
4. 所有方法必须是静态方法
5. 使用 DateTimeFormatter 线程安全
6. 包含完整的单元测试,使用 JUnit 5
7. 添加详细的注释和异常处理

Qoder 生成代码示例大致如下所示。

public class DateTimeUtils {
    private static final DateTimeFormatter DEFAULT_FORMATTER = 
        DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    private static final DateTimeFormatter ISO_FORMATTER = 
        DateTimeFormatter.ISO_LOCAL_DATE_TIME;

    /**
     * 将字符串解析为LocalDateTime
     * @param dateTimeStr 日期时间字符串
     * @param pattern 格式模式,如果为null则尝试ISO格式
     * @return LocalDateTime对象
     * @throws DateTimeParseException 解析失败时抛出
     */
    public static LocalDateTime parse(String dateTimeStr, String pattern) {
        if (StringUtils.isBlank(dateTimeStr)) {
            throw new IllegalArgumentException("日期字符串不能为空");
        }

        try {
            if (pattern == null) {
                return LocalDateTime.parse(dateTimeStr, ISO_FORMATTER);
            } else {
                return LocalDateTime.parse(dateTimeStr, 
                    DateTimeFormatter.ofPattern(pattern));
            }
        } catch (DateTimeParseException e) {
            throw new DateTimeParseException(
                "无法解析日期: " + dateTimeStr, dateTimeStr, 0);
        }
    }

    // 自动生成单元测试
    @Test
    void testParseWithDefaultPattern() {
        LocalDateTime result = DateTimeUtils.parse("2025-01-15 14:30:00", null);
        assertNotNull(result);
        assertEquals(2025, result.getYear());
    }
}

开发效率大大提升。传统方式需要 30 分钟编码左右的编码 + 10 分钟左右的测试,在使用 Qoder 工具后,2 分钟左右的时间就完成了,且测试覆盖率 100%!

案例 3

复杂业务逻辑,订单折扣计算系统。如果是更复杂的场景,可以要求 AI 使用规则引擎。

场景:电商系统中的促销规则引擎。

复杂的场景,建议使用分步提示词策略。

第一步:设计整体架构。

创建一个订单折扣计算系统,使用策略模式实现不同促销规则:
- 满减优惠(满 100 减 10)
- 会员折扣(VIP 8折)
- 优惠券抵扣(固定金额)
使用 Spring Boot 实现,支持规则链式组合

第二步:在第一步的基础上优化具体实现。

在 DiscountStrategy 接口中添加 calculate 方法的 Javadoc,
要求返回 BigDecimal 避免精度丢失,
并添加 @Transactional 注解保证数据一致性

第三步:生成单元测试。

为 DiscountService 生成边界条件测试:
1. 订单金额恰好满足门槛值
2. 多个优惠组合使用
3. 优惠金额超过订单总额的情况

如果单元测试有问题,可以继续会话交流,提供多轮修正。

最终生成核心代码大致如下所示。

public interface DiscountStrategy {
    /**
     * 计算折扣金额
     * @param order 订单信息
     * @return 折扣金额,使用BigDecimal保证精度
     */
    BigDecimal calculate(Order order);
}

@Service
public class DiscountService {
    private final List<DiscountStrategy> strategies;

    public BigDecimal calculateTotalDiscount(Order order) {
        return strategies.stream()
            .map(strategy -> strategy.calculate(order))
            .reduce(BigDecimal.ZERO, BigDecimal::add);
    }
}

氛围编程的最佳实践与避坑指南

不少人看到别人都是从一个新项目开始,老项目或现有项目无从下手。其实,完全没必要。

针对具体的函数、方法,甚至是加某些字段,改某些逻辑,都可以让 AI 生成。

下面是我总结的一些氛围编程的最佳实践与避坑指南,工大家参考!

黄金比例:人机协作

根据社区实践,推荐以下工作模式:

  • 纯 Vibe 模式(20%):用于快速原型、周末项目、技术调研
  • 负责任 AI 辅助(80%):生产代码必须经过审查、测试和理解

总之就是 AI 生成的代码,自己一定要 codereview 一遍。

风险提示与规避

常见陷阱如下。

  1. 代码质量债务:AI 生成的代码可能包含隐藏 bug。建议严格执行代码审查,使用 SonarQube 静态分析。
  2. 安全漏洞:敏感数据处理不当。建议,避免在提示词中暴露 API 密钥,使用环境变量。
  3. 知识产权风险:代码可能被上传到云端。建议使用企业私有化部署的 AI 服务。
  4. 技术能力退化:过度依赖导致基本功生疏。建议定期手写核心算法等,保持编程手感。

Java 开发者专属建议

  • 结合 Javadoc:要求 AI 生成详细的 API 文档
  • 利用 Lombok:减少样板代码,token 等,让 AI 专注于业务逻辑
  • JUnit 5 最佳实践:强制 AI 使用 Assertions 和 ParameterizedTest
  • SonarLint 集成:实时检测代码坏味道

总结

氛围编程正在推动开发者从代码工匠架构设计师转变。2025 年,Java 开发者的核心竞争力不再是语法熟练度,而是:

  • 需求洞察能力
  • 系统设计思维
  • AI 协作技巧
  • 质量把控能力

氛围编程不是取代程序员,而是解放程序员。它让我们从重复劳动中解脱,专注于真正创造价值的设计和思考。

最好的氛围编程实践者,一定是理解代码背后原理的人。到目前为止,AI 还只是工具,让 AI 成为我们的超能力,而不是替代品!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Java 氛围编程实战,5 分钟写完 CRUD 接口 + 单元测试,测试覆盖率 100%