技术栈选择

后端框架:Spring Boot 2.7.x(提供RESTful API、依赖管理)
数据库:MySQL 8.0(关系型数据存储)+ Redis(缓存高频数据如用户会话)
前端框架:Vue.js 3 + Element Plus(构建响应式管理后台)
实时交互:WebSocket(Spring Boot STOMP协议实现)
安全框架:Spring Security + JWT(认证与授权)
测试工具:JUnit 5 + Mockito(单元测试)+ Postman(API测试)
部署:Docker + Nginx(容器化与负载均衡)


核心功能模块设计

用户系统
  • 角色分级:学生、教师、管理员
  • 注册/登录:手机号+验证码或邮箱+密码(JWT签发)
  • 权限控制:RBAC模型,注解@PreAuthorize实现接口级拦截
课程管理
  • 课程CRUD:支持富文本编辑(Quill.js集成)
  • 章节树形结构:嵌套JSON存储于MySQL,使用@OneToMany关联
  • 学习进度追踪:Redis的ZSET记录用户章节完成状态
实时互动
  • 在线问答:WebSocket广播提问,教师端优先响应
  • 代码沙箱:Docker隔离运行用户提交代码(调用Judge0 API)
  • 协同笔记:Operational Transformation算法实现多用户实时编辑
考试系统
  • 自动组卷:遗传算法实现题目难度权重匹配
  • 防作弊:随机题目顺序 + 窗口失去焦点检测(前端实现)
  • 自动批改:正则表达式匹配编程题输出结果

数据库ER图关键字段

-- 用户表
CREATE TABLE `user` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `username` VARCHAR(64) UNIQUE,
  `password` CHAR(60) -- BCrypt加密
);

-- 课程表
CREATE TABLE `course` (
  `id` BIGINT PRIMARY KEY,
  `teacher_id` BIGINT FOREIGN KEY REFERENCES `user`(`id`),
  `title` VARCHAR(120) NOT NULL
);

-- 学习记录表
CREATE TABLE `study_record` (
  `user_id` BIGINT,
  `chapter_id` BIGINT,
  `completed` BOOLEAN DEFAULT FALSE,
  PRIMARY KEY (`user_id`, `chapter_id`)
);


测试设计示例

单元测试(Service层)
@Test
void testCreateCourse() {
    Course mockCourse = new Course();
    mockCourse.setTitle("SpringBoot进阶");
    when(courseRepository.save(any())).thenReturn(mockCourse);
    
    Course result = courseService.createCourse(mockCourse);
    assertEquals("SpringBoot进阶", result.getTitle());
    verify(courseRepository).save(mockCourse);
}

压力测试(JMeter配置)
  • 模拟1000并发用户注册请求
  • 断言响应时间<500ms
  • 监控MySQL连接池使用率(HikariCP指标)
安全测试
  • OWASP ZAP扫描XSS/SQL注入漏洞
  • JWT Token过期时间强制校验测试

关键源码结构

src/
├── main/
│   ├── java/
│   │   └── com/example/
│   │       ├── config/       # Spring Security配置
│   │       ├── controller/   # 暴露API接口
│   │       ├── service/       # 业务逻辑
│   │       └── repository/    # JPA数据访问
│   └── resources/
│       ├── static/           # Vue打包后的文件
│       └── application.yml   # 多环境配置

完整代码建议通过GitHub模板仓库获取(例如spring-boot-learning-platform),包含CI/CD流水线配置(GitHub Actions)和Swagger API文档生成。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐