1. 项目概述
作为一名有着十年开发经验的Java全栈工程师,我最近完成了一个基于Spring Boot的工程师运维服务管理系统。这个项目从需求分析到最终上线历时三个月,采用了当前主流的技术栈,包括Spring Boot、Vue.js和MySQL。系统主要面向IT运维团队,提供用户管理、工单处理、设备监控等核心功能,帮助团队提升运维效率。
在实际开发过程中,我发现很多计算机专业的学生在做毕业设计时都会遇到类似的技术选型问题。这个项目不仅完整实现了前后端功能,还包含了详细的文档说明和测试用例,非常适合作为毕业设计的参考案例。下面我将从架构设计、功能实现到测试部署的完整过程进行详细解析。
2. 系统架构设计
2.1 技术栈选型
选择合适的技术栈是项目成功的关键。经过多方比较,我最终确定了以下技术组合:
后端技术:
- Spring Boot 2.7.0:简化配置,快速构建微服务
- MyBatis-Plus 3.5.1:增强的ORM框架
- Shiro 1.8.0:安全认证和授权
- Lombok:简化Java Bean编写
前端技术:
- Vue.js 3.0:渐进式JavaScript框架
- Element Plus:UI组件库
- Axios:HTTP客户端
- Vue Router:路由管理
数据库:
- MySQL 8.0:关系型数据库
- Redis 6.2:缓存数据库
选择这些技术主要基于以下考虑:
- Spring Boot的自动配置和起步依赖大大减少了样板代码
- Vue.js的响应式特性和组件化开发提高了前端开发效率
- MyBatis-Plus在MyBatis基础上提供了更多便捷功能
- MySQL作为成熟的关系型数据库,社区支持完善
2.2 系统架构模式
系统采用经典的MVC(Model-View-Controller)架构模式,结合前后端分离的设计思想:
模型层(Model):
- 实体类:对应数据库表结构
- DAO层:数据访问接口
- Service层:业务逻辑处理
视图层(View):
- 前端Vue组件
- 页面模板
- 静态资源
控制层(Controller):
- 接收HTTP请求
- 调用Service处理业务
- 返回JSON响应
这种分层架构的优势在于:
- 职责分离,便于维护
- 组件可复用性高
- 前后端开发可以并行进行
- 易于单元测试
3. 核心功能实现
3.1 用户认证模块
用户认证是系统的门户,我采用了Shiro框架实现安全的认证和授权机制。具体实现步骤如下:
- 数据库设计:
sql复制CREATE TABLE `sys_user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`salt` varchar(20) COMMENT '加密盐值',
`email` varchar(100) COMMENT '邮箱',
`mobile` varchar(20) COMMENT '手机号',
`status` tinyint COMMENT '状态 0:禁用 1:正常',
`create_time` datetime COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户';
- 密码加密:
java复制// 使用Shiro的加密工具
public static String encryptPassword(String password, String salt) {
return new SimpleHash("sha-256", password, salt, 1024).toString();
}
- Shiro配置:
java复制@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
factoryBean.setSecurityManager(securityManager);
// 设置登录页面
factoryBean.setLoginUrl("/login");
// 设置未授权页面
factoryBean.setUnauthorizedUrl("/403");
Map<String, String> filterMap = new LinkedHashMap<>();
// 配置不会被拦截的链接
filterMap.put("/static/**", "anon");
filterMap.put("/login", "anon");
filterMap.put("/**", "authc");
factoryBean.setFilterChainDefinitionMap(filterMap);
return factoryBean;
}
注意事项:
- 密码一定要加盐加密存储,防止彩虹表攻击
- 登录失败次数限制是必要的安全措施
- Session超时时间不宜设置过长
3.2 工单管理模块
工单系统是运维服务的核心,主要功能包括工单创建、分配、处理和关闭。关键实现点:
- 状态机设计:
java复制public enum TicketStatus {
NEW(1, "新建"),
ASSIGNED(2, "
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容