完善自述文件

This commit is contained in:
hanxuanyu 2022-01-25 16:34:22 +08:00
parent cb418ba35a
commit 95b41916dc
4 changed files with 316 additions and 0 deletions

View File

@ -0,0 +1,58 @@
## common-spring-boot-starter
### 简介
本模块封装了常用的工具类,对外提供基础的功能,当前包含:
- Msg统一消息对象
### 引入
```java
<dependency>
<groupId>com.hxuanyu</groupId>
<artifactId>common-spring-boot-starter</artifactId>
<version>1.0.4</version>
</dependency>
```
### 功能
#### Msg
用于规范方法间调用返回的结果即方法无论调用成功还是失败都以Msg对象作为返回值实际的返回值封装在msg中调用者可根据Msg的状态码进行状态判断成功则从Msg对象中取值失败则做相应的失败处理避免了直接调用时可能出现的空指针问题。
使用方式:
```java
public void test() {
Msg<String> msg = doSomeThing("args");
if (msg.isSuccess()) {
// do some things
} else if (msg.isFailed()) {
// do some things
}
}
private Msg<String> doSomeThing(String args) {
if (args != null) {
return Msg.success("your success msg", "your data");
} else {
return Msg.failed("your failed msg");
}
}
```
- 如果方法调用成功,则在返回值中传入成功消息以及可选的返回对象,该对象为泛型,可以在声明方法时指定
- 如果方法调用失败,则在返回值中传入失败原因,**注意失败时不可设置data字段只能传入失败消息**
- 调用者可以根据错误码或者直接调用`msg.isSuccess()`方法判断是否调用成功,并对结果进行相应处理
- 在链式调用时位于中间的方法不建议直接将上游请求到的msg结果传递给下游应重新创建新的msg对象

View File

@ -0,0 +1,111 @@
## monitor-spring-boot-starter
### 简介
- 本模块实现了一个定时监控并推送通知的服务,适用于处理一些定时监控并实时通知的场景,举个栗子,可以用来监控火车票,当检测到有票之后触发通知,通过配置好的通知方式告知我们,目前内置了邮件通知、日志输出方式,以及自定义通知。
### 引入
```java
<dependency>
<groupId>com.hxuanyu</groupId>
<artifactId>monitor-spring-boot-starter</artifactId>
<version>1.0.4</version>
</dependency>
```
### 使用
- 创建监控项
```java
@MonitorItem(cron = "0/20 * * * * *")
public class TestMonitorItem extends BaseMonitorItem {
private final Logger logger = LoggerFactory.getLogger(TestMonitorItem.class);
@Override
public CheckResult check() {
double random = Math.random();
int result = (int) (random * NotifyType.values().length);
logger.info("随机索引值:{}", result);
if (NotifyType.values().length > 0) {
NotifyType notifyType = NotifyType.values()[result];
switch (notifyType) {
case TYPE_LOG:
return CheckResult.triggered("日志输出", NotifyType.TYPE_LOG);
case TYPE_CUSTOM:
return CheckResult.triggered(new NotifyService.CustomNotify() {
@Override
public void onNotify() {
logger.info("自定义通知");
}
});
case TYPE_MAIL:
return CheckResult.triggered(new Mail("2252193204@qq.com", "测试邮件主题", "测试邮件内容"), NotifyType.TYPE_MAIL);
case TYPE_MSG:
return CheckResult.triggered("短信通知", NotifyType.TYPE_MSG);
default:
return CheckResult.triggered("默认通知", null);
}
}
return CheckResult.nonTriggered();
}
}
```
> MonitorManager会在启动时扫描标注了`@MonitorItem`的类,并创建对应的实例,定时执行类中实现的`check()`方法,当方法返回`CheckResult`的`triggered`字段为`true`时,会自动执行`CheckResult`中传入的通知。
- 新增任务
```java
Msg<String> msg = monitorItemBeanManager.addMonitorTask(new BaseMonitorItem("CustomBean", "0/10 * * * * *") {
@Override
public CheckResult check() {
return CheckResult.triggered("动态新增通知", NotifyType.TYPE_LOG);
}
});
```
- 定时任务管理器:用于修改监控间隔、删除任务或者查看当前所有任务
```java
@Resource
MonitorItemBeanManager monitorItemBeanManager;
```
- 查看任务列表
```java
Map<String, BaseMonitorItem> monitorItemMap = monitorItemBeanManager.getMonitorItemMap();
```
- 设置任务监控频率
```java
Msg<String> msg = monitorItemBeanManager.setMonitorTaskCron(taskId, taskCron);
```
- 移除定时任务
```java
Msg<String> msg = monitorItemBeanManager.deleteMonitorTask(taskId);
```

View File

@ -0,0 +1,44 @@
## network-spring-boot-starter
### 简介
本模块对`HttpClient`进行了封装实现了GET、POST、PUT、DELETE等Http请求的同步和异步方法
### 引入
```java
<dependency>
<groupId>com.hxuanyu</groupId>
<artifactId>network-spring-boot-starter</artifactId>
<version>1</version>
</dependency>
```
### 使用
- 引入`HttpService`对象
```java
@Resource
HttpService httpService;
```
- 调用相关方法
```java
Msg<String> msg = httpService.doGet("https://baidu.com");
if (msg.isSuccess()) {
logger.info(msg.toString());
}
```
- 本模块依赖了common-spring-boot-starter模块引入本模块后会自动引入common模块下的相关类同时`HttpService`的方法返回值使用了common模块下的`Msg`统一封装

View File

@ -0,0 +1,103 @@
## notify-spring-boot-starter
### 简介
本模块用于对用户进行通知,目前支持邮件通知,后续会加入短信等更多类型
- MAIL对springboot的mail模块进行了封装实现了一个邮件发送队列并支持html作为邮件内容
### 引入
```java
<dependency>
<groupId>com.hxuanyu</groupId>
<artifactId>notify-spring-boot-starter</artifactId>
<version>1.0.4</version>
</dependency>
```
### 使用
#### Mail
- 引入`NotifyService`对象
```java
@Resource
NotifyService notifyService;
```
- 添加Mail配置
```java
notify:
mail:
host: your mail host
protocol: smtp
default-encoding: UTF-8
password: your passwd
username: your account
port: 587
properties:
mail:
debug: false
stmp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory
```
- 调用相关方法
```java
notifyService.notify(new Mail("2252193204@qq.com", "test subject", "test success"), NotifyType.TYPE_MAIL);
```
#### 短信和日志
- 引入`NotifyService`对象
```java
@Resource
NotifyService notifyService;
```
- 调用相关方法
```java
notifyService.notify("短信通知方式", NotifyType.TYPE_MSG);
notifyService.notify("日志输出方式", NotifyType.TYPE_LOG);
```
#### 自定义
- 引入`NotifyService`对象
```java
@Resource
NotifyService notifyService;
```
- 调用方法
```java
notifyService.notify(new NotifyService.CustomNotify() {
@Override
public void onNotify() {
// do some things
}
});
```