从文科生到程序员:我是如何用 Spring Boot 和 JavaScript 打开技术世界大门的
大家好!我是一个曾经连“变量”是什么都不知道的中文系毕业生。三年前,我靠着一本《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 创建后端服务
按如下配置:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x
- Group: com.example
- Artifact: skill-demo
- Dependencies: Spring Web, Spring Data JPA, H2 Database
点击 “Generate” 下载 ZIP 包,解压后用 IntelliJ IDEA 打开。
创建数据模型
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; }
}
- 创建数据访问接口
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> {
}
- 创建控制器
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);
}
}
- 启动应用:运行
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:
- 安装:
pip install aider-chat - 在项目目录运行:
aider - 输入提示词,例如:
“帮我给 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 开发”有力得多!
下一步学习建议
你已经迈出了最重要的一步!接下来可以:
- 深化后端:学 Spring Security(用户登录)、MySQL(真实数据库)
- 升级前端:学 Vue 或 React,替代原生 JavaScript
- 部署上线:用 Vercel 部署前端,用 Render 部署 Spring Boot(免费!)
- 丰富简历:把这个项目放到 GitHub,写 README 说明功能和技术栈
🌟 我的心得:不要追求“学完再做”,而是“边做边学”。我第一份工作面试时,简历上就写了这个小项目,面试官当场让我讲实现细节——正中下怀!
最后的话
技术探索不是一蹴而就的旅程,而是一步步踩出来的路。你不需要一开始就知道所有答案,只需要保持好奇,动手尝试。
记住:每一个大神,都曾是一个连“Hello World”都跑不通的新手。
现在,关掉这篇文章,打开你的 IDE,敲下第一行代码吧。你的简历,正等着被这段经历点亮。
加油,未来的开发者!

评论 0