当前位置: 首页 > news >正文

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组件✅ 前后端联调✅ 部署上线

http://www.dtcms.com/a/577568.html

相关文章:

  • 莱芜网站优化平台现在中型公司做网站用的是什么框架
  • 区块链-B站API程序系统方案
  • LVS三种模式及调度算法解析
  • MySql 9.5.0(2025)-Windows安装步骤
  • 查看 MySQL 数据库里的所有信息,包括表结构、数据内容
  • Rocky10 使用kubeadm 安装k8s 单节点
  • K8s 中的Serviceaccount
  • MySQL 事务的两种使用方式
  • 【MySQL 进阶】高性能优化
  • 如何做静态页网站wordpress swf 上传
  • Dotnet-Dapper的用法
  • 深入理解 Spring Boot 中的数据库迁移:Flyway 与 Liquibase 实战指南
  • 使用visa进行仪器控制
  • 百度网站验证创意交易平台官网
  • Node.js异步编程的多种实现方式:从回调地狱到优雅的async/await
  • 全面评测 | Photoshop 2026 新特性深度解析与实测体验
  • FastAPI深度解析
  • wordpress会员数据共同盐城网络优化
  • 学校招聘教师网站建设网站建站前期准备工作
  • springboot系列--自动配置原理
  • Spring Aop实现
  • 在 VSCode 中:修改快捷键
  • 网站推广软件免费下载安装wordpress这个博客
  • React 18.x 学习计划 - 第七天:React性能优化
  • 网站建设费是几个点的税远程访问群晖wordpress
  • 2.9 超参数自动调优(Optuna / Hyperopt)
  • 【大模型训练】 roll 权重更新 过程
  • QAbstractListModel 详细解析
  • 2025自动化运维厂商选型指南:数字化转型下,自动化运维平台为何成为“必选项”?
  • 如何把宏观战略转化为可执行的产品计划