从文科生到程序员:我是如何用 Spring Boot 和 JavaScript 打开技术世界大门的

API打磨师
2026-04-15 14:37
阅读 1603

大家好!我是一个曾经连“变量”是什么都不知道的中文系毕业生。三年前,我靠着一本《JavaScript 入门到放弃》和无数深夜的 Google 搜索,硬是转行成了一名后端开发工程师。今天写这篇教程,就是想告诉所有零基础的朋友:技术不是天才的专利,而是普通人一步步走出来的路

最近很多学弟学妹问我:“我想学编程,但不知道从哪开始?”“Spring Boot 听起来好高级,我这种小白能学会吗?”“简历上写‘熟悉 JavaScript’是不是太虚了?”

这些问题我都经历过。所以我决定写一篇真正“手把手”的入门指南,带你用最简单的语言,理解 Spring Boot、JavaScript、Aider(AI 编程助手) 这些工具,并完成你的第一个全栈小项目——还能把它写进简历!


第一步:别怕,这些工具其实很“亲民”

Spring Boot 是什么?

你可以把它想象成一个“自动搭好的厨房”。你想做菜(开发网站),传统方式要自己砌灶台、装水管、买锅碗瓢盆……而 Spring Boot 直接给你一个装修好的厨房,你只要专注“炒菜”(写业务逻辑)就行。

JavaScript 是什么?

它是让网页“动起来”的魔法。比如你点按钮弹出对话框、输入框实时校验、页面不刷新就能加载新内容——这些都靠 JavaScript。

Aider 是什么?

它是一个基于 AI 的编程助手(类似 GitHub Copilot),但更智能:你能用自然语言说“帮我写一个登录接口”,它就能生成代码,甚至还能根据你的反馈修改!对新手来说,简直是“外挂级”工具。

💡 我当初学的时候,光配环境就折腾了三天,最后发现是 JDK 版本不对。现在有了 Aider,连环境配置都能问它!


环境准备:10 分钟搞定开发“装备”

我们不需要成为电脑专家,只要按步骤操作即可。

你需要安装:

工具 作用 安装建议
JDK 17 Java 运行环境 Oracle 官网 下载
Node.js 18+ 运行 JavaScript nodejs.org 下载 LTS 版
IntelliJ IDEA Community Java 开发 IDE 免费,比 Eclipse 更友好
VS Code 前端代码编辑器 轻量、插件多
Git 代码管理 必装,官网下载

验证是否安装成功

打开终端(Mac/Linux)或命令提示符(Windows),依次输入:

java -version    # 应显示 openjdk version "17.x"
node -v          # 应显示 v18.x 或更高
git --version    # 应显示 git version 2.x

如果报错,请检查是否把安装路径加入系统环境变量(网上搜“JDK 环境变量配置”有详细图文)。

🚫 避坑指南:不要用 JDK 8!Spring Boot 3.x 要求 JDK 17+。我当初就在这里卡了两天。


核心概念:用“点外卖”理解前后端

假设你要点一份外卖:

  • 前端(JavaScript) = 手机上的美团 App
    负责展示菜单、输入地址、点击“下单”按钮。

  • 后端(Spring Boot) = 餐厅的厨房 + 接单系统
    收到订单后,处理数据(检查库存、计算价格)、通知厨师、返回“订单成功”。

  • API = 你和餐厅之间的“电话线”
    前端通过 API 告诉后端“我要下单”,后端通过 API 回复“已接单”。

这就是现代 Web 开发的基本分工。


实战项目:做一个“个人技能展示页”

我们要做一个简单网页:输入你的姓名和技能(如“会写简历”、“会用 Aider”),点击提交,后端保存并展示出来。

第 1 步:用 Spring Boot 创建后端服务

  1. 访问 Spring Initializr

  2. 按如下配置:

    • Project: Maven
    • Language: Java
    • Spring Boot: 3.2.x
    • Group: com.example
    • Artifact: skill-demo
    • Dependencies: Spring Web, Spring Data JPA, H2 Database
  3. 点击 “Generate” 下载 ZIP 包,解压后用 IntelliJ IDEA 打开。

  4. 创建数据模型 Skill.java

// src/main/java/com/example/skilldemo/Skill.java
package com.example.skilldemo;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Skill {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String description;

    // 必须要有空构造函数
    public Skill() {}

    public Skill(String name, String description) {
        this.name = name;
        this.description = description;
    }

    // getter 和 setter
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
}
  1. 创建数据访问接口 SkillRepository.java
// src/main/java/com/example/skilldemo/SkillRepository.java
package com.example.skilldemo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface SkillRepository extends JpaRepository<Skill, Long> {
}
  1. 创建控制器 SkillController.java
// src/main/java/com/example/skilldemo/SkillController.java
package com.example.skilldemo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin(origins = "*") // 允许前端跨域访问
@RequestMapping("/api/skills")
public class SkillController {

    @Autowired
    private SkillRepository skillRepository;

    @GetMapping
    public List<Skill> getAllSkills() {
        return skillRepository.findAll();
    }

    @PostMapping
    public Skill addSkill(@RequestBody Skill skill) {
        return skillRepository.save(skill);
    }
}
  1. 启动应用:运行 SkillDemoApplication.java
    如果看到 Tomcat started on port(s): 8080,说明成功!

✅ 测试:浏览器访问 http://localhost:8080/api/skills,应该返回 [](空列表)。


第 2 步:用 JavaScript 写前端页面

在项目根目录新建文件夹 frontend,创建 index.html

<!-- frontend/index.html -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>我的技能展示</title>
    <style>
        body { font-family: Arial, sans-serif; padding: 20px; }
        input, button { padding: 8px; margin: 5px; }
        .skill-item { border: 1px solid #ccc; padding: 10px; margin: 10px 0; }
    </style>
</head>
<body>
    <h1>添加你的技能</h1>
    <input type="text" id="name" placeholder="技能名称(如:写简历)">
    <input type="text" id="desc" placeholder="技能描述(如:能写出打动HR的简历)">
    <button onclick="addSkill()">提交</button>

    <h2>已有技能</h2>
    <div id="skills"></div>

    <script>
        // 页面加载时获取已有技能
        window.onload = fetchSkills;

        async function fetchSkills() {
            const response = await fetch('http://localhost:8080/api/skills');
            const skills = await response.json();
            const container = document.getElementById('skills');
            container.innerHTML = '';
            skills.forEach(skill => {
                const div = document.createElement('div');
                div.className = 'skill-item';
                div.innerHTML = `<strong>${skill.name}</strong>: ${skill.description}`;
                container.appendChild(div);
            });
        }

        async function addSkill() {
            const name = document.getElementById('name').value;
            const desc = document.getElementById('desc').value;
            if (!name || !desc) {
                alert('请填写完整!');
                return;
            }

            await fetch('http://localhost:8080/api/skills', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ name, description: desc })
            });

            // 清空输入框并刷新列表
            document.getElementById('name').value = '';
            document.getElementById('desc').value = '';
            fetchSkills();
        }
    </script>
</body>
</html>

双击打开 index.html,就能看到页面!输入内容点击提交,技能会保存到后端并显示出来。

🔥 重点:这就是前后端分离开发!前端用 JavaScript 发请求,后端用 Spring Boot 处理数据。


第 3 步:用 Aider 提升效率(可选但强烈推荐)

如果你觉得写代码太慢,试试 Aider

  1. 安装:pip install aider-chat
  2. 在项目目录运行:aider
  3. 输入提示词,例如:

    “帮我给 SkillController 添加一个删除技能的接口,路径是 DELETE /api/skills/{id}”

Aider 会自动生成代码并解释修改了哪些文件。我当初就是靠它快速理解 Spring Boot 的结构!


常见问题解答(FAQ)

Q1:为什么浏览器访问 http://localhost:8080/api/skills 是空的?

A:因为你还没添加任何技能!先通过前端页面提交一条,或者用 Postman 发 POST 请求。

Q2:启动 Spring Boot 报错 “Failed to configure a DataSource”?

A:这是 H2 数据库没配好。确保 pom.xml 中有 H2 依赖,且没有其他数据库配置。可以加一行配置:

# application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.h2.console.enabled=true

Q3:前端页面点了提交没反应?

A:检查浏览器开发者工具(F12)的 Console 和 Network 标签。常见原因是:

  • 后端没启动(端口 8080 未监听)
  • 跨域问题(确保控制器加了 @CrossOrigin
  • JSON 格式错误(body 必须是 { "name": "...", "description": "..." }

Q4:这个项目能写进简历吗?

当然能! 你可以这样写:

个人技能展示系统 | Spring Boot + JavaScript

  • 实现前后端分离架构,使用 RESTful API 通信
  • 采用 H2 内存数据库存储数据,支持动态增删改查
  • 使用 Aider 辅助开发,提升编码效率 40%+

这比“熟悉 Java”“了解 Web 开发”有力得多!


下一步学习建议

你已经迈出了最重要的一步!接下来可以:

  1. 深化后端:学 Spring Security(用户登录)、MySQL(真实数据库)
  2. 升级前端:学 Vue 或 React,替代原生 JavaScript
  3. 部署上线:用 Vercel 部署前端,用 Render 部署 Spring Boot(免费!)
  4. 丰富简历:把这个项目放到 GitHub,写 README 说明功能和技术栈

🌟 我的心得:不要追求“学完再做”,而是“边做边学”。我第一份工作面试时,简历上就写了这个小项目,面试官当场让我讲实现细节——正中下怀!


最后的话

技术探索不是一蹴而就的旅程,而是一步步踩出来的路。你不需要一开始就知道所有答案,只需要保持好奇,动手尝试。

记住:每一个大神,都曾是一个连“Hello World”都跑不通的新手

现在,关掉这篇文章,打开你的 IDE,敲下第一行代码吧。你的简历,正等着被这段经历点亮。

加油,未来的开发者!

评论 0

最热最新
暂无评论
API打磨师Lv.1
0
影响力
0
文章
0
粉丝