创建Spring Boot项目
Maven依赖
Spring Boot版本为 2.7.10,erupt版本为 1.12.14
erupt版本要与Spring Boot版本适配,3.x.x版本Spring Boot暂不适用说是
    <properties>
        <erupt.version>1.12.14</erupt.version>
    </properties> 
    <dependencies>
        <!--tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--test测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--MySql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
            <scope>runtime</scope>
        </dependency>
        <!--核心管理模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-admin</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--后台WEB界面-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-web</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!-- ****** 以下模块不需要可以去掉 ****** -->
        <!--erupt-cloud 云节点分布式控制模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-cloud-server</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--任务管理模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-job</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--代码生成器模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-generator</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--服务监控模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-monitor</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--在线接口开发-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-magic-api</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--自定义页面模块-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-tpl</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--element-ui-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-tpl-ui.element-ui</artifactId>
            <version>${erupt.version}</version>
        </dependency>
        <!--velocity-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies> 
xxxApplication启动类添加注解
import org.springframework.boot.autoconfigure.domain.EntityScan;
import xyz.erupt.core.annotation.EruptScan;
@EruptScan
@EntityScan 
main方法中加入下列代码,启动后自动打开指定页面
        try {
            System.setProperty("java.awt.headless", "false");
            Desktop.getDesktop().browse(new URI("http://localhost:8088"));
        } catch (Exception ignore) {
        } 
yml参数配置
server:
  port: 8081
  # 启用 gzip 压缩
  compression:
    mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
    enabled: true
  error:
    includeException: true
    includeStacktrace: ALWAYS
    includeMessage: ALWAYS
spring:
  #当 erupt.redisSession 为 true 时必须配置此项!
  redis:
    database: 0
    timeout: 10000
    host: 127.0.0.1
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/erupt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: ****
  jpa:
    show-sql: false
    generate-ddl: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    database: mysql
    properties:
      hibernate:
        format_sql: false
  mail:
    username: xxxx@qq.com
    password: xxxxxxx
    host: smtp.qq.com
    properties:
      mail.smtp.ssl.auth: true
      mail.smtp.ssl.enable: true
      mail.smtp.ssl.required: true
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
  profiles:
    active: dev
  #避免依赖循环引用
#  main:
#    allow-circular-references: true
erupt-app:
  # 登录失败几次,需要验证码
  verifyCodeCount: 2
  # 是否开启水印,1.12.0 及以上版本支持
  water-mark: true
  # 登录失败几次出现验证码,值为0时表示一直需要登录验证码
  verify-code-count: 2
  # 登录密码是否加密传输,特殊场景如:LDAP登录可关闭该功能获取密码明文
  pwd-transfer-encrypt: true
  # 是否开启密码重置功能,关闭后前端会屏蔽所有重置密码的入口适用于 ldap 等场景,1.12.7 及以上版本支持
  reset-pwd: true
  # 多语言配置
  locales: [
    "zh-CN",      // 简体中文
    "zh-TW",      // 繁体中文
    "en-US",      // English
    "fr-FR",      // En français
    "ja-JP",      // 日本語
    "ko-KR",      // 한국어
    "ru-RU",      // русск
    "es-ES"       // español
  ]
  # 自定义登录页路径,1.10.6 及以上版本支持,支持http网络路径
#  login-page-path: /customer-login.html
erupt:
  # 是否开启csrf防御
    csrf-inspect: true
    # 开启redis方式存储session,默认false,开启后需在配置文件中添加redis配置(同 Spring Boot)
    redis-session: false
    # redis session是否自动续期,1.10.8及以上版本支持
    redis-session-refresh: false
    # 附件上传存储路径, 默认路径为:/opt/erupt-attachment
    upload-path: D:/erupt/annex
    # 是否保留上传文件原始名称
    keep-upload-file-name: false
    # 项目初始化方式,NONE 不执行初始化代码、EVERY 每次启动都进行初始化、FILE 通过标识文件判断是否需要初始化
    init-method-enum: file
    # 默认语言,1.12.3 及以上版本支持
    default-locales: zh-CN
    # 是否开启任务调度(导入erupt-job时有效)
    job.enable: true
    # 是否开启日志采集,开启后可在系统日志中查看实时日志 1.12.14 及以上版本支持
    log-track: true
    # 日志采集最大暂存行数 1.12.14 及以上版本支持
    log-track-cache-size: 1000
    # 是否记录操作日志,默认true,该功能开启后可在【系统管理 → 操作日志】中查看操作日志
    security:
      record-operate-log: true
    upms:
      # 登录 session 时长(redisSession为true时有效)
      # redisSession 为 false 时控制有效期的方法:server.servlet.session.timeout
      expire-time-by-login: 60
      # 严格的角色菜单策略,如果非管理员用户拥有“角色管理权限”则仅能编辑已有权限的角色菜单
      strict-role-menu-legal: false
magic-api:
  web: /magic/web
  # 接口配置文件存放路径
  resource.location: D:/erupt/magic-script
  show-url: false 
数据库配置
根据所用数据库类型选择MySQL、SQLServer等进行配置
建立一个数据库(erupt),其他名也行,暂时不用建表,项目启动会自动建立多个基础表
首页配置(home.html)
手动创建,位置:/resources/public/home.html
<!DOCTYPE html>
<html lang="en">
<head>
    <title>home</title>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1" name="viewport">
</head>
<style>
    body {
        /* 设置背景图片 */
        background-image: url('login-img-BlackSilk.jpg');
        /* 背景图片覆盖整个元素 */
        background-size: cover;
        /* 背景图片不重复 */
        background-repeat: no-repeat;
        /* 背景图片居中显示 */
        background-position: center;
        /* 可选:设置背景图片固定,滚动页面时不移动 */
        background-attachment: fixed;
        /* 可选:设置边距,根据需要调整 */
        margin: 0;
        padding: 0;
        /* 确保整个页面都有背景图片 */
        height: 100vh; /* 视口高度 */
        width: 100vw; /* 视口宽度,但通常不需要设置,因为body默认就是100%宽度 */
    }
</style>
<body>
</body>
</html> 
前端配置(app.js)
手动创建,位置:/resources/public/app.js
window.eruptSiteConfig = {
    //erupt接口地址,在前后端分离时指定
    domain: "",
    //附件地址,一般情况下不需要指定,如果自定义对象存储空间,则需在此指定附件资源访问地址
    fileDomain: "",
    //登录页中间标题
    title: "風華絕代",
    //登录页中间标题描述
    desc: "風華絕代-Leslie",
    //是否展示版权信息
    copyright: true,
    //自定义版权内容,1.12.8及以上版本支持,值可以是方法也可以是字符串
    copyrightTxt: function() {
        return "風華絕代-Cheung Kowk Wing"
    },
    //高德地图 api key,使用地图组件须指定此属性,amapKey获取地址:https://lbs.amap.com (服务平台为:Web端(JS API))
    amapKey: "xxxx",
    //高德地图 SecurityJsCode
    amapSecurityJsCode: "xxxxx",
    //登录页logo路径
    logoPath: "log-Leslie.jpg",
    //登录后左上角logo旁边的文字
    logoText: "風華絕代",
    //注册页地址,会在登录页面增加一个链接 (仅是一个链接,需要自定义实际样式)
    registerPage: "",
    //自定义导航栏按钮,配置后将会出现在页面右上角
    r_tools: [{
        text: "自定义功能按钮",
        icon: "fa-eercast",
        mobileHidden: true,
        click: function (event) {
            alert("Function button");
        }
    }],
    //登录成功事件 1.12.3 及以上版本移动至window.eruptEvent中声明
    login: function(user){
    },
    //注销事件 1.12.3 及以上版本移动至window.eruptEvent中声明
    logout: function(user){
    }
};
//路由回调函数
window.eruptRouterEvent = {
    //key表示要监听的路由切换地址,为url hash地址最后一段
    //例如:http://www.erupt.xyz:9999/#/build/table/demo中demo为回调key
    demo: {
        //路由载入事件
        load: function (e) {
        },
        //路由退出事件
        unload: function (e) {
        }
    },
    //$ 为全路径通配符,在任何路由切换时都会执行load与unload事件
    $: {
        load: function (e) {
        },
        unload: function (e) {
        }
    }
};
//erupt生命周期函数
window.eruptEvent = {
    //页面加载完成后回调
    startup: function () {
    },
    //登录成功
    login: function(user){
    },
    //注销事件
    logout: function(user){
    }
} 
前端样式(app.css)
手动创建,位置:/resources/public/app.css
/* 例:修改登录页样式 */
layout-passport > .container {
    background-position: center !important;
    background-repeat: repeat !important;
    background-size: cover !important;
    background-color: #fff !important;
    background-image: url(login-img-BlackSilk.jpg) !important;
    /*background-image: url(https://www.erupt.xyz/demo/login-bg.svg) !important;*/
} 
启动项目
访问地址:localhost:8081
默认账号:erupt
默认密码:erupt

登录
默认有以下菜单栏

新建菜单

新建下级菜单(表格视图)




![【洛谷/水滴题解】[NOIP2005 普及组] 采药](https://i-blog.csdnimg.cn/direct/04d90d9b60eb4503b946f925911d1bd9.png)





![基于RK3568 Android11 移除长按电源按键弹窗的对话框中的 [关机] 和 [紧急呼救] 选项(详细分析)](https://i-blog.csdnimg.cn/direct/d40420653a5a41faae53c4535effdc95.png#pic_center)









