# XingTool 工具包
### 相关介绍
XingTool sdk 工具包,v1.0.5正式版发布。( 依赖的版本不能低于 1.0.1 )
星天制作的 Java 工具包,是基于springboot 2 制作的 , 基于JDK1.8,它是一个整合各工具类的整合starter。
里面包含多种工具,补丁,base接口,aop自动装配,注解,以及 acm型的一些基础算法。
目前已更新使用文档 v1.0.5 [使用文档](使用文档.md)
**它有以下特性**:
- 1.在基础包中,提供了很多工具类,整合了若依,ican等大佬的common工具包,是一个hutool的扩展(因为带了hutool工具)。
- 2.在autoconfigue包中,提供了一些aop和自动装配的类,一些可以通过配置文件开启(方便注入),也可以手动注入bean。
- 3.有几个使用方式。
1). 可以通过Util.静态类的方式调出静态方法,一般由XT开头的类,例如XTObjUtil等,以便直接调出类名、方法,根据类名意思了解该功能,好处是暂时不用查文档,并且和hutool互补,能够加快开发效率。
2). 可以通过new的方式获得非单例对象,也是常用的方式。
3). 在启动类上加上@EnableXingToolsServer,开启自动注入,比如默认开启的两个注解aop(例如@Printlog注解,以及其他现版本默认未开启的各种日志异常拦截aop等),其他的配置或者aop需要在配置文件中开启,以xingtools开头即可点出,例如
```properties
# 开启跨域
xingtools.enabled.cors-config=true
# 开启 redis
xingtools.enabled.redisconfig=true
# 开启 redis 的多个工具类,需 @Autowired 注入使用
xingtools.enabled.redisconfig-util=true
# 使用jackson2序列化(默认,可以不用配置)
xingtools.enabled.redisconfig-setting=jackson
# 默认全局异常拦截
xingtools.enabled.global-exception=true
# mybatis-plus 分页插件 这个还是推荐自己注册Bean
xingtools.enabled.mybatis-plus-config=true
```
> 注意这些只是进行了简单的配置,也就是大多数人的需求,也暂时不用每次自行创建配置类等。
> 所有aop和配置都可以通过配置类或者自行bean导入,导入启动后,会有日志说明配置启动成功,也可以用xingtools.enabled.log-info=false把自动导入的日志关闭。**由于减少侵入和大小占用,有些相应的配置解释会提供工件名,请自行配置相关依赖。**
- 4).也就是SpringSecurity,SpringCould的相关配置,可以通过配置@EnableXTCloudSecurity,@EnableXingToolsCloudServer,开启相关Security和Could的简化配置,精简你的项目。
综上不管是简单作为工具包,或者简化你的SpringBoot,SpringCloud等项目,该Starter放到你的依赖里也是一种不错的选择。
#### 安装教程
> 使用 Maven 导入依赖
Maven依赖 v1.0.5版本 (最优依赖)
```xml
<dependency>
<groupId>top.cutexingluo.tools</groupId>
<artifactId>xingtool-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
```
Maven 依赖 (无版本号)
```xml
<dependency>
<groupId>top.cutexingluo.tools</groupId>
<artifactId>xingtool-spring-boot-starter</artifactId>
<version>x.x.x</version>
</dependency>
```
Maven 最低依赖 v1.0.1版本:
```xml
<dependency>
<groupId>top.cutexingluo.tools</groupId>
<artifactId>xingtool-spring-boot-starter</artifactId>
<version>1.0.1</version>
</dependency>
```
#### 使用说明
1. 静态工具类,new对象
2. @EnableXingToolsServer等注解启动装配,使用配置文件快捷开启对应配置
如有bug,欢迎反馈。
#### 使用样例
以下是最新版本的使用样例,可以加快你的开发
##### 1. 数据封装类,Controller 层
```java
@RestController
@RequestMapping("/admin")
public class AdminController {
@RequestLimit // 限流注解
@WebLog(match = "ip:uri:method+s+tab+ip", levelStr = "info", referer = "log1") // 打印日志注解
@GetMapping("/user/getAll")
public Result getAll() { // Result 对象 推荐使用
//ResultUtil.selectResult 动态解析返回值 (false和null得到获取失败) 也可以直接使用 Result.success()
return ResultUtil.selectResult(adminService.getAll(),"获取成功","获取失败");
}
// 这个注解是打印日志,其中一个策略是可以使用spEL表达式执行任意方法
@WebLog(spEL = " @testService.hello ( #msgMap, #bundle ,'hello world') ")
@GetMapping("/user/getOne")
public R<UserInfo> getOne() { // R对象 alias MSResult 支持泛型
//ResultUtil.selectResult 动态解析返回值 (false和null得到获取失败) 也可以直接使用 Result.success()
return ResultUtil.selectR(adminService.getOne(),"获取成功","获取失败");
}
}
```
有人会说:我不想使用你的 Result 这个封装返回类,能不能自己定义。这是可以的,在1.0.3版本,统一了4个返回类,全部继承于CommonResult类,该类的基本属性如下:
```java
public class CommonResult<C, T> implements IResultSource<C, T> {
protected C code;
protected String msg;
protected T data;
}
```
它实现 IResultSource 接口,而我们可以直接实现IResultSource或者再往上仅实现 IResult 接口就行了。基本上工具包的很多方法参数都是IResult 接口。我们可以直接实现该接口像这样:
```java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MyResult implements IResult<String,Object> {
protected String retCode; // 不想使用 code,想使用 retCode
protected String message; // 不想使用 msg,想使用 message
protected Object data;
@Override
public Object getData() {
return data;
}
@JsonIgnore
@Override
public String getCode() {
return retCode;
}
@JsonIgnore
@Override
public String getMsg() {
return message;
}
}
```
对于不需要json转化的字段进行@JsonIgnore忽略掉就行。
同理如果不需要data字段,再往上实现 IResultData 接口(包含code和msg) 就可以,工具包里面的很多异常或者枚举都是实现了该接口。
##### 2.工具类使用,拦截器 以 OAuth2 为例
```java
@Component
public class MyTokenFilter extends OncePerRequestFilter {
@Autowired
private TokenStore tokenStore;
// jwt解析类
@Autowired
private MyUserAuthenticationConverter myUserAuthenticationConverter;
RYRedisCache redisCache;
// 构造注入
@Autowired
public MyTokenFilter(RYRedisCache redisCache, ApplicationContext applicationContext) {
this.redisCache = redisCache;
AccessLimitUtil.setRedisCache(redisCache);
AccessLimitUtil.setApplicationContext(applicationContext);
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
try {
// AccessLimitUtil 工具类 , 可以利用 Redis 进行限流
// limitFilter 解析方法上的注解
boolean check1 = AccessLimitUtil.limitFilter(request, response, filterChain);
if (!check1) return;
// limitFilter IP 拦截
boolean check2 = AccessLimitUtil.limitIP(request, response, 1, 20,
"访问过于频繁,请稍后访问");
if (!check2) return;
} catch (Exception e) {
XTResponseUtil.forbidden(response, e.getMessage()); // 返回 403
return;
}
Authentication authentication;
try {
// XTAuthenticationUtil 执行链操作,对token进行解析
authentication = new XTAuthenticationUtil
.AuthenticationBuilder(request, XTAuthenticationUtil.USE_HEADERS | XTAuthenticationUtil.USE_COOKIES) // headers 和 cookies 都要解析
.setTokenExtractor(tokenExtractor)
.setTokenSt
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论





























收起资源包目录





































































































共 623 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论


gaoxu666666
- 粉丝: 650
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大学计算机基础课程的引导自学教学法.docx
- 网络工程专业培养技术方案提交v.doc
- 基于单片机的霓虹灯控制器的方案设计书22496.doc
- Photoshop解析网游平面摄影的后期制作.doc
- 电力企业大数据基础平台浅述.docx
- 网络会计安全问题的理性思考.docx
- 2007年9月二级C语言笔试历年真题.doc
- 未成年人互联网社会交往中的自我表达.docx
- 《通信系统仿真技术》实验报告.doc
- 小型水利工程的项目管理与工程造价控制研究.docx
- 软件工程在企业信息化平台建设中的应用.docx
- 网络营销测试试卷.doc
- 软件项目可研技术方案.doc
- FPGA-DSP嵌入式系统方案设计书.doc
- 以网络共享平台建设为基础的.doc
- PLC七层电梯控制系统设计方案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
