# Springboot快速启动器
>[danger] 当前文档为 `1.x` 版本的文档。simple-robot 1.x 版本已经被认定为过时且停止维护,请前往 `2.x` 版本文档:https://www.yuque.com/simpler-robot/simpler-robot-doc
[![](https://img.shields.io/badge/simple--robot-core-green)](https://github.com/ForteScarlet/simple-robot-core) [![img](https://camo.githubusercontent.com/f8464f5d605886b8369ab6daf28d7130a72fd80e/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f696f2e6769746875622e466f727465536361726c65742f73696d706c652d726f626f742d636f7265)](https://search.maven.org/artifact/io.github.ForteScarlet/simple-robot-core) <br>[![](https://img.shields.io/badge/simple--robot-core--springboot--starter-green)](https://github.com/ForteScarlet/simple-robot-core-springboot-starter)[![](https://img.shields.io/maven-central/v/io.github.ForteScarlet.simple-robot/core-spring-boot-starter)](https://search.maven.org/artifact/io.github.ForteScarlet.simple-robot/component-cqhttp-spring-boot-starter)<br>[![](https://img.shields.io/badge/%E7%9C%8B%E4%BA%91%E6%96%87%E6%A1%A3-doc-green)](https://www.kancloud.cn/forte-scarlet/simple-coolq-doc) [![](https://img.shields.io/badge/QQ%E7%BE%A4-782930037-blue)](https://jq.qq.com/?_wv=1027&k=57ynqB1)
# 使用
首先,在使用springboot启动器之前,你需要使用springboot的 **properties** 格式配置文件:`application.properties`, 并将simple-robot中的配置项写入此类配置文件中。
<br>
其次,一般拥有springboot启动器的组件所处的核心系版本,都是从核心的`1.9.x`开始的。
>[warning] **注意!** 一般来讲,整合Springboot的时候,你都需要去手动指定一下simple-robot的包扫描路径。配置项名为`core.scannerPackage`,具体内容参考文档的 **`配置`** 章节。
## 组件启动器
我为一些特定的组件提供了其专属的启动器。
一般来讲,所有官方(即我)推出的启动器都只需要如上文所说的,
将配置文件更换为properties格式并将`@SpringbootApplication`注解替换为`@SimpleRobotSpringbootApplication`即可。
<br>
以下我将展示已经提供了官方启动器的项目地址,以供参考。
<br>
### CQ HTTP 组件Springboot启动器
https://github.com/ForteScarlet/simple-robot-component-cqhttp-springboot-starter
([文档](./组件-酷Q-CoolQHTTPAPI/Springboot快速启动器.md))
## 自定义启动器
如果你想要通过核心启动器来自定义一个启动器,那么你需要先选择导入核心启动器:
> https://search.maven.org/artifact/io.github.ForteScarlet.simple-robot/core-spring-boot-starter/
**Maven**
```xml
<dependency>
<groupId>io.github.ForteScarlet.simple-robot</groupId>
<artifactId>core-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
```
**Gradle**
```
implementation 'io.github.ForteScarlet.simple-robot:core-spring-boot-starter:${version}'
```
然后参考注解类`@SimpleRobotSpringBootApplication`内容。
`@SimpleRobotSpringBootApplication`内默认继承了springboot的启动类注解`@SpringbootApplication`,
并且其中会去默认扫描一个组件的自动配置包路径:
- `com.simplerobot.core.springboot.configuration`
核心启动器需要某个组件启动器通过Spring向其提供一些启动所需的必要对象:
- `BaseApplication`的实现类
- 整合了springboot的beanFactory且标注了`@SimpleRobotApplication(resources = "/application.properties")`注解的App接口实例。
而核心会为组件启动器的构建所提供的bean有:
- `SpringbootQQLogBack`对象,用来初始化QQLog的logback,使其与springboot的日志相结合。
# 使用
如果你使用的是我编写的标准版的快速启动器,你只需要将原本Springboot启动器上的`@SpringbootApplication`注解替换为`@SimpleRobotSpringBootApplication`即可。
如果是第三方所提供的启动器,则遵循其定义的规则。
如果启动器完整且正常,你最终可以得到如下内容:
- 当前组件所实现的`BaseApplication`启动器实例,例如CQ HTTP组件的`CoolQHttpApplication`
- 当前组件所实现的,`BaseApplication`启动后所得到的组件实现的`SimpleRobotContext`实例,例如CQ HTTP组件的`CQHttpXContext`
- `SimpleRobotNameLogger`, 一个用来获取logger名称的类
- `SpringbootQQLogBack`,一个用来跟springboot的logger整合的类
- `MsgParser`,当前组件的字符串消息转化器,即将接收到的原始消息字符串转化为`MsgGet`对象的转化器
- `MsgProcessor`,当前组件的监听消息触发器,即传入一个`MsgGet`实例来触发监听消息
- `BotManager`,Bot管理器
- `DependCenter`,simple-robot内部的依赖管理器。在整合了Springboot之后便会主要依赖于Springboot的beanFactory。
- 组件所实现的SENDER(`SenderSendList`接口实例), 例如CQ HTTP组件内部的`CoolQHttpMsgSender`对象实例。
- 组件所实现的GETTER(`SenderGetList`接口实例), 例如CQ HTTP组件内部的`CoolQHttpMsgSender`对象实例。
- 组件所实现的SETTER(`SenderSetList`接口实例), 例如CQ HTTP组件内部的`CoolQHttpMsgSender`对象实例。
# 版本规则
对于所有的启动器版本命名规则定义如下:
格式为`a.b`, 其中,**`a`** 为此启动器所对应的核心版本系,**`b`** 代表当前启动器的版本。
例如:
`1.9.0`, `1.9.1`
这两个版本中,`a`均为`1.9`,`b`为`0`和`1`,都代表其内部使用的是`1.9.x`的核心(一般来讲都是最后一个版本的核心版本。),只不过`1.9.1`相对于`1.9.0`来讲更新、修复、改善了一些东西。
# 注意事项
## 1 启动器中的核心版本系与当前核心版本系
一般来讲,启动器所提供的核心版本系总是会比当前的核心版本系要低一个级别。例如,当前核心是`1.10.4`版本,即`1.10.x`系列,则最高版本的启动器一般会是`1.9.x`系列。
为什么呢?因为启动器一般来讲是需要保证其中所使用的核心为最新版本的,而当前所处的核心版本系中是无法保证最新版本的版本号的。
## 2 快速启动器中的springboot版本
截至到当前启动器版本为止,快速启动器中所包含的Springboot项目依赖的坐标与版本如下:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
```
如有需要请自行覆盖并更替其版本。
## 3 快速启动器的日志整合
官方的组件快速启动器中,`QQLog`的日志输出已经被重定向到了Springboot所使用的`slf4j`日志中,其中日志等级的对应关系为:
| QQLog的日志等级 | slf4j的日志等级 |
| --------------- | --------------- |
| debug | debug |
| info | info |
| success | info |
| warning | warn |
| error | error |
整合后,日志所使用的`name`为`simple-robot-app + 随机颜表情`的名称。其中,`simple-robot-app`后面是有一个空格的。
如果想要关闭颜表情,你可以在项目启动**之前**调用`FaceUtil.close()`
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用API与功能
- 国际化语言
- 异常
- 消息监听
- @Listen
- @OnListen模板
- @Filter
- 消息参数截取
- @Spare
- @Constr
- @Ignore
- @ListenBreak
- @ListenBreakPlugin
- @ListenBody
- 监听响应
- 成功判定与返回值
- 监听上下文
- 动态参数
- 监听消息API
- 异步监听 @Async
- 限流监听 @Limit
- 自定义Http送信器
- 枚举与类型
- 送信器
- SENDER
- SETTER
- GETTER
- 返回值
- 其他位置
- 日志与日志拦截
- 异常处理
- 依赖注入
- 自定义依赖获取
- 批量依赖载入
- 注意事项
- 常量
- 定时任务
- 自定义过滤
- 拦截器
- 拦截器总定义
- 上下文对象总定义
- 监听消息拦截
- 送信器拦截
- 监听函数拦截
- CAT码
- CQ码
- CQCode
- CQ码工具类
- CQ扩展工具类
- AppendList拼接链
- 高级内容
- 阻断机制
- 截断机制
- 自定义枚举类型
- 枚举工厂
- byName注解
- 自定义注解
- 配置
- 文件配置
- 注解配置
- 参数配置
- 多配置
- 多账号
- 自定义账号管理器
- 小心!
- 核心版本与组件如何升级核心
- 核心版本迭代指南
- 核心
- 更新日志
- jar包与依赖
- 监听消息类结构图
- 快速启动
- 模组与扩展
- 模组开发
- 现有模组
- 通用模组-延时任务
- 通用模组-CQ码工具
- 转义器
- CQ码操作工具类
- CQ码模板-CodeTemplate
- CQ码载体-KQCode
- CQ码构建器
- MQ码工具类
- 通用模组-redis-bot管理器
- 通用模组-Debugger
- Debugger-common模块
- Debugger-server模块
- Debugger-client模块
- 通用模组-钉钉机器人
- 组件-Mirai(JVM)
- 快速开始(1.13+)
- springboot-starter
- 注意事项
- 配置
- 额外的内容
- 快速回复
- 额外监听
- CQ码解析
- 组件-酷Q(QQ)-CQ HTTP API(基本失效)
- 快速开始(推荐)
- 快速开始(1.7.x以下,不推荐)
- 快速开始(Springboot启动器)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 额外的内容
- 自定义额外监听
- CQ送信器
- 元事件
- 监听消息类结构图
- 组件-酷Q(QQ)-JCQ(失效)
- 快速开始
- 更新日志
- 额外的内容
- JCQ日志
- 配置
- 注意事项
- 监听消息类结构图
- 组件-酷Q(QQ)-HTTP TO CQ(失效)
- 快速开始(核心1.7.x及以下)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 监听消息类结构图
- 组件-酷Q(QQ)-LEMOC (失效)
- 快速开始(核心1.7.x及以下)
- 配置
- 注意事项
- 更新日志
- 监听消息类结构图
- Springboot快速启动器
- 常见问题汇总
- BUG反馈
- 更新计划总览