Java-简单项目开发流程
阶段一:项目规划
第1步:明确项目需求
问题清单:
1. 这个系统要做什么?(员工管理?考勤?请假?)
2. 有哪些角色?(管理员、HR、普通员工)
3. 核心功能模块有哪些?(至少列出5-8个)
4. 预计多少用户使用?(决定架构复杂度)示例:员工管理系统需求
核心模块:
✅ 用户管理(登录、权限)
✅ 员工档案管理(增删改查)
✅ 部门管理
✅ 考勤管理
✅ 请假申请与审批
✅ 薪资管理
✅ 报表统计第2步:绘制功能模块图
┌─────────────────────────────────────────────┐
│ 员工管理系统 (hrone-base) │
├─────────────────────────────────────────────┤
│ 用户认证模块 │ 员工档案 │ 考勤管理 │
│ 权限管理 │ 部门管理 │ 请假管理 │
│ 系统设置 │ 薪资管理 │ 报表统计 │
└─────────────────────────────────────────────┘第3步:数据库设计(ER图)
-- 先设计核心表(最少5-10张表)
核心表:
- sys_user (系统用户表)
- sys_role (角色表)
- sys_menu (菜单权限表)
- tb_employee_info (员工信息表)
- tb_department (部门表)
- tb_attendance (考勤记录表)
- tb_leave_request (请假申请表)阶段二:技术选型
技术栈选择
后端技术栈:框架: Spring Boot 2.7.x数据库: MySQL 8.0ORM框架: MyBatis-Plus 3.5.x安全框架: Spring Security + JWT工具类: Hutool / Apache CommonsAPI文档: Swagger 3.x日志: Logback前端技术栈:框架: Vue 3 + Element Plus或者: React + Ant Design状态管理: Pinia / ReduxHTTP客户端: Axios开发工具:IDE: IntelliJ IDEA 2023+数据库工具: Navicat / DBeaverAPI测试: Postman / Apifox版本控制: Git + GitHub/Gitee项目管理: Maven 3.8+阶段三:环境搭建
第1步:安装开发环境
# 1. 安装JDK 8 或 JDK 11
java -version
# 验证输出: java version "1.8.0_xxx"# 2. 安装Maven
mvn -version
# 验证输出: Apache Maven 3.8.x# 3. 安装MySQL
mysql --version
# 验证输出: mysql Ver 8.0.xx# 4. 安装IDE
下载 IntelliJ IDEA Community(免费版)或 Ultimate(付费版)# 5. 安装Git
git --version
# 验证输出: git version 2.x.x第2步:创建数据库
-- 登录MySQL
mysql -u root -p-- 创建数据库
CREATE DATABASE hrone_base DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 创建用户
CREATE USER 'hrone'@'localhost' IDENTIFIED BY 'hrone123456';-- 授权
GRANT ALL PRIVILEGES ON hrone_base.* TO 'hrone'@'localhost';
FLUSH PRIVILEGES;-- 使用数据库
USE hrone_base;阶段四:项目初始化
方式1:手动创建Maven项目(您的项目方式)
步骤1:创建父POM项目
# 1. 创建项目目录
mkdir hrone-base-server
cd hrone-base-server# 2. 创建父POM文件
<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hrone</groupId><artifactId>hrone-base</artifactId><version>1.0.0</version><packaging>pom</packaging><name>hrone-base</name><description>企业人事管理系统</description><!-- 子模块 --><modules><module>hrone-common</module><module>hrone-framework</module><module>hrone-system</module><module>hrone-admin</module></modules><!-- 版本管理 --><properties><java.version>1.8</java.version><spring-boot.version>2.7.14</spring-boot.version><mybatis-plus.version>3.5.3</mybatis-plus.version><mysql.version>8.0.33</mysql.version><jwt.version>0.9.1</jwt.version><swagger.version>3.0.0</swagger.version><hutool.version>5.8.20</hutool.version></properties><!-- 依赖管理 --><dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- MyBatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- 工具类 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>步骤2:创建子模块
目录结构:
hrone-base-server/
├── pom.xml # 父POM
├── hrone-common/ # 公共模块
│ ├── pom.xml
│ └── src/main/java/com/hrone/base/common/
│ ├── constant/ # 常量类
│ ├── utils/ # 工具类
│ ├── exception/ # 自定义异常
│ └── core/ # 核心基类
│
├── hrone-framework/ # 框架模块
│ ├── pom.xml
│ └── src/main/java/com/hrone/base/framework/
│ ├── config/ # 配置类
│ ├── security/ # 安全配置
│ └── interceptor/ # 拦截器
│
├── hrone-system/ # 系统模块(用户、角色、权限)
│ ├── pom.xml
│ └── src/main/java/com/hrone/base/system/
│ ├── domain/
│ ├── mapper/
│ ├── service/
│ └── controller/
│
├── hrone-employee/ # 业务模块(员工管理)
│ ├── pom.xml
│ └── src/main/java/com/hrone/base/employee/
│
└── hrone-admin/ # 启动模块├── pom.xml└── src/main/├── java/com/hrone/base/admin/│ └── HroneApplication.java # 启动类└── resources/├── application.yml # 配置文件├── application-dev.yml└── logback.xml # 日志配置步骤3:创建启动类
// hrone-admin/src/main/java/com/hrone/base/admin/HroneApplication.java
package com.hrone.base.admin;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication(scanBasePackages = "com.hrone.base")
public class HroneApplication {public static void main(String[] args) {SpringApplication.run(HroneApplication.class, args);System.out.println("系统启动成功!");}
}步骤4:配置文件
# hrone-admin/src/main/resources/application.yml
server:port: 8080servlet:context-path: /apispring:application:name: hrone-base# 数据库配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/hrone_base?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: hronepassword: hrone123456# 环境配置profiles:active: dev# MyBatis配置
mybatis-plus:mapper-locations: classpath*:mapper/**/*Mapper.xmltype-aliases-package: com.hrone.base.**.domainconfiguration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 日志配置
logging:level:com.hrone: debugorg.springframework: warn阶段五:基础功能开发
第1步:创建通用返回类
// hrone-common/src/main/java/com/hrone/base/common/core/domain/AjaxResult.java
package com.hrone.base.common.core.domain;import java.util.HashMap;/*** 操作消息提醒*/
public class AjaxResult extends HashMap<String, Object> {private static final String CODE_TAG = "code";private static final String MSG_TAG = "msg";private static final String DATA_TAG = "data";/*** 初始化一个新创建的 AjaxResult 对象*/public AjaxResult(int code, String msg, Object data) {super.put(CODE_TAG, code);super.put(MSG_TAG, msg);if (data != null) {super.put(DATA_TAG, data);}}/*** 返回成功消息*/public static AjaxResult success() {return new AjaxResult(200, "操作成功", null);}public static AjaxResult success(String msg) {return new AjaxResult(200, msg, null);}public static AjaxResult success(Object data) {return new AjaxResult(200, "操作成功", data);}/*** 返回错误消息*/public static AjaxResult error() {return new AjaxResult(500, "操作失败", null);}public static AjaxResult error(String msg) {return new AjaxResult(500, msg, null);}
}第2步:创建基础Controller
// hrone-common/src/main/java/com/hrone/base/common/core/controller/BaseController.java
package com.hrone.base.common.core.controller;import com.hrone.base.common.core.domain.AjaxResult;
import com.hrone.base.common.core.page.TableDataInfo;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;/*** web层通用数据处理*/
public class BaseController {protected final Logger logger = LoggerFactory.getLogger(this.getClass());/*** 响应请求分页数据*/protected TableDataInfo getDataTable(List<?> list) {TableDataInfo rspData = new TableDataInfo();rspData.setCode(200);rspData.setMsg("查询成功");rspData.setRows(list);rspData.setTotal(new PageInfo(list).getTotal());return rspData;}/*** 响应返回结果*/protected AjaxResult toAjax(int rows) {return rows > 0 ? AjaxResult.success() : AjaxResult.error();}
}第3步:创建第一个实体类
// hrone-system/src/main/java/com/hrone/base/system/domain/SysUser.java
package com.hrone.base.system.domain;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;@Data
@TableName("sys_user")
public class SysUser {@TableId(type = IdType.AUTO)private Long userId;private String userName;private String nickName;private String email;private String phonenumber;private String password;private String status;private Date createTime;private Date updateTime;
}第4步:创建第一个完整功能
按照三层架构创建:
// 1. Mapper接口
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {List<SysUser> selectUserList(SysUser user);
}// 2. Service接口
public interface ISysUserService {List<SysUser> selectUserList(SysUser user);SysUser selectUserById(Long userId);int insertUser(SysUser user);int updateUser(SysUser user);int deleteUserById(Long userId);
}// 3. Service实现
@Service
public class SysUserServiceImpl implements ISysUserService {@Autowiredprivate SysUserMapper userMapper;@Overridepublic List<SysUser> selectUserList(SysUser user) {return userMapper.selectUserList(user);}// ... 其他方法
}// 4. Controller
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {@Autowiredprivate ISysUserService userService;@GetMapping("/list")public TableDataInfo list(SysUser user) {List<SysUser> list = userService.selectUserList(user);return getDataTable(list);}@PostMappingpublic AjaxResult add(@RequestBody SysUser user) {return toAjax(userService.insertUser(user));}
}阶段六:进阶功能
1. 添加权限控制(Spring Security)
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/login").permitAll().anyRequest().authenticated().and().formLogin().and().csrf().disable();}
}2. 添加Swagger文档
@Configuration
@EnableOpenApi
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.hrone.base")).paths(PathSelectors.any()).build();}
}3. 添加全局异常处理
@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public AjaxResult handleException(Exception e) {logger.error("系统异常", e);return AjaxResult.error(e.getMessage());}
}阶段七:前后端联调
前端项目初始化
# 使用Vue3 + Vite
npm create vite@latest hrone-ui -- --template vuecd hrone-ui
npm install# 安装UI框架
npm install element-plus# 安装路由
npm install vue-router@4# 安装状态管理
npm install pinia# 安装HTTP客户端
npm install axios阶段八:完整学习路线图
第1周:基础准备✅ 学习Java基础✅ 学习Spring Boot基础✅ 学习MyBatis基础✅ 学习MySQL数据库第2-3周:框架搭建✅ 创建多模块Maven项目✅ 配置Spring Boot✅ 集成MyBatis-Plus✅ 实现第一个CRUD功能第4-5周:核心功能✅ 用户登录认证(JWT)✅ 权限管理(RBAC)✅ 员工管理模块✅ 部门管理模块第6-7周:进阶功能✅ 文件上传下载✅ Excel导入导出✅ 定时任务✅ 消息通知第8周:前端开发✅ Vue3基础✅ Element Plus组件✅ 前后端联调✅ 部署上线