易学易用、简化开发、丰富扩展、开箱即用
XXL-BOOT 是一个快速开发平台,易学易用、简化开发、丰富扩展、开箱即用。内置安全登录、权限管控、端到端代码生成、响应式UI、国际化、分布式扩展……等能力。整合前后端流行技术,致力为 中小企业、个人开发者 打造开箱即用的中后台解决方案。
源码仓库地址 | Release Download |
---|---|
https://github.com/xuxueli/xxl-boot | Download |
https://gitee.com/xuxueli0323/xxl-boot | Download |
XXL-BOOT 前身为 xxl-permission、xxl-code-generator 等多个历史项目,以及 XXL-JOB、XXL-CONF 等系列开源软件所所沉淀中后台能力,经过整合演进最终诞生。
请下载项目源码并解压,获取 “数据库初始化SQL脚本” 并执行即可。”调度数据库初始化SQL脚本” 位置为:
/xxl-boot/doc/db/tables_xxl_boot.sql
项目支持集群部署,集群情况下各节点务必连接同一个mysql实例。
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
- xxl-boot
- xxl-boot-admin : 中后台系统模块
- xxx-boot-web : 前台系统服务(预留)
配置文件地址:
/xxl-boot/xxl-boot-admin/src/main/resources/application.properties
配置内容说明:
### xxl-boot, datasource。 数据库配置,与 ”2.1 初始化数据库“ 章节初始化的数据库保持一致。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_boot?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
项目打包部署后,可通过如下地址及账号进行登录。
登录页截图示例:
系统首页截图示例:
项目支持集群部署,提升系统容灾和可用性。 集群部署时,几点要求和建议:
进入“用户管理”菜单,支持针对系统用户进行管理,进行用户新增、管理、角色授权等操作。
进入“角色管理”菜单,支持针对系统权限角色进行动态管理,进行角色新增、管理、菜单分配等操作。
进入“资源管理”菜单,支持针对系统资源进行细粒度管理,支持页面、按钮等多类型资源管理,进行新增、管理等操作。
内置代码生成器,只需提供SQL将会自动生成全部代码,覆盖“controller/servie/dao/entity…”等多层,加速研发效率。
默认提供Demo表SQL语句,可操作体验,参考下图。
点击右上角 “生成代码按钮”,即可完整多层代码的生成,非常方便;
代码生成后,可在界面查看和使用 “controller/service/dao/mybatis/model” 多层源代码。部分截图如下:
代码生成截图示例:
代码生成截图示例:
代码生成截图示例:
代码生成截图示例:
代码生成截图示例:
代码生成截图示例:
略
项目进行安全的用户权限体系设计,基于RBAC(Role-Based Access Control,基于角色的访问控制)这种广泛采用的权限管理模型,通过将权限授予角色,然后将角色分配给用户,从而实现对系统资源的访问控制。
RBAC 的设计目标是简化对系统资源的访问管理,提高系统的安全性和可维护性。以下是项目 RBAC 权限体系相关实体表:
xxl_boot_user : 用户表
xxl_boot_role : 角色表
xxl_boot_resource : 资源表,菜单Page、功能Btn等。
xxl_boot_user_role : 用户-角色关系表
xxl_boot_role_res : 角色-资源关系表
项目进行安全的登录验证防护设计,针对需要登录验证、以及需要强权限校验的页面、操作等资源控制场景,抽象出如下权限注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Permission {
/**
* permission value (need login) // 权限标识,为空则不校验,非空则需要通过RBAC权限体系进行相关资源授权才可访问
*/
String value() default "";
/**
* need login // 是否需要登录验证,默认全部需要,特殊情况可定制
*/
boolean login() default true;
}
示例:
// 1、需要登录态
@Permission : need login, but not valid permission
// 2、需要登录态,同时需要进行RBAC权限授权相关资源
@Permission("xxx") : need login, and valid permission
// 3、不需要登录态
@Permission(login = false) : not need login, not valid anything
参考上文 “3.1、代码生成”。
略
略
除通过原始方式部署外,可以通过以下命令快速构建项目,并启动运行;
# package
mvn clean package
# build image
docker build -t xuxueli/xxl-boot-admin ./xxl-boot-admin
/**
* 自定义 mysql 等配置,可通过 "PARAMS" 指定,参数格式 PARAMS="--key=value --key2=value2" ;
* 配置项参考文件:/xxl-boot/xxl-boot-admin/src/main/resources/application.properties
*/
docker run --name xxl-boot-admin -p 8080:8080 -v /tmp:/data/applogs -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_boot?Unicode=true&characterEncoding=UTF-8" -d xuxueli/xxl-boot-admin
# 其他:docker部署mysql时可能存在网络问题,可通过如下命令获取mysql可用IP
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 Issue 讨论新特性或者变更。
更多接入的公司,欢迎在 登记地址 登记,登记仅仅为了产品推广。
产品开源免费,并且将持续提供免费的社区技术支持。个人或企业内部可自由的接入和使用。
无论金额多少都足够表达您这份心意,非常感谢 :) 前往捐赠