# @Listen
>[info] @Listen是最主要的注解,没有此注解就无法构成一个监听函数。
> 提供`byName`注解:`@Listen.byName(...)`
<br>
## 参数
```java
/**
* 监听器所监听的类型, 可以监听多个类型
* 方法上的参数将会覆盖类上的参数
*/
MsgGetTypes[] value();
/**
* 假如出现了多个监听器处理同一个消息,使用此参数对其进行排序,默认值为1
* 核心版本1.6.3后默认值修改为100
*/
int sort() default 1;
/**
* 相当于一个ID,此参数为空的时候会自动根据包、类、方法名、参数列表生成一个唯一ID
*/
String name() default "";
```
其中,`value`为一个`MsgGetTypes`类型的数组(`MsgGetTypes`为枚举类型,详情请查看枚举相关章节),定义了这个函数要监听的消息类型。
而`sort`参数则会在消息触发多个监听函数的时候,对他们的执行顺序进行排序。排序规则为JDK默认的由小到大排序。
此注解可以使用在类上,也可以使用在方法上。当一个方法所在的类与此方法本身都存在此注解的时候,优先使用类上的注解。
使用举例:
```java
//这是一个监听私信消息的监听函数
@Listen(value = MsgGetTypes.privateMsg, sort = 0)
public void listen1(PrivateMsg privateMsg, MsgSender sender){
// TODO some...
}
```
## 与依赖注入的整合
所有的`@Listen`注解中,默认"继承"了`@Beans(single = false)`
也就是说所有的监听类,如果不手动指定`@Beans`注解的话,默认是**非单例**的。
我很清楚这样会存在严重的效率问题,所以会在后续版本修正为默认**单例**。
至于为什么不在一开始就默认单例,嘛总是有原因的啦。
>[success] 核心 `1.5.0` 之后 `@Listen` 恢复为默认单例模式。
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用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反馈
- 更新计划总览