# xiaov-util-boot-start **Repository Path**: xiaovcloud/xiaov-util-boot-start ## Basic Information - **Project Name**: xiaov-util-boot-start - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-01-15 - **Last Updated**: 2021-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xiaov-util-boot-start ## 描述 本项目包括本人项目中常用一些公共的组件,无需再添加其他组件的pom或者做任何额外的配置 全部的帮助类均使用静态的方法,方便调用 ,让您的代码更加简洁 `xiaov-util-boot-start`立志打造出一套让你不需要再添加其他工具类的快速开发工具类 > 备注: > 本项目尚不完整,欢迎有志之士加入 > >由于开发延时的原因在maven中央仓库的maven坐标并不一定支持所有的功能,您可以选择快照版本的jar,如有需要请在在底部查看配置xiaovmaven的私服 > >更多请联系xiaov,邮箱:xiaovcloud@xiaov.org ## 使用 ### 加入pom依赖 如果您想使用它,请在maven项目的pom文件中加入依赖。 ```xml org.xiaov xiaov-util-boot-start 1.0-alpha ``` ## 介绍 本项目分为两个部分,一个是org.xiaov.core核心包下的普通帮助类,一个是org.xiaov.extra下需要被spring扫描到的组件 ## 功能 目前主要的功能: |工具类|描述| | ---- | ---- | |JWTHelper|token验证| |EmailHelper|发送电子邮件| |RedisHelper|redis操作| |HttpCode|常用的状态码| |R|通用的返回结果集| |权限拦截器|jwt拦截器,session拦截器| |TreeHelper|树形结构展示| ## 详细开发文档 ### BeanHelper 对象 (等待更新...) ### Date 日期 (等待更新...) #### DateHelper (等待更新...) #### LocalDateHelper (等待更新...) ### EmailHelper 这个客户端是集成了发邮件的功能,支持qq邮箱,163邮箱等国内主流邮箱。经测试,gmail国内并不支持 您需要开启POP3/IMAP/SMTP等其中的一个服务。 您需要在springboot的配置中您可以加入以下内容,更多详细配置同springboot集成mail。 新的MailHelper内置了默认的端口号等配置,只需要添加host,username,password就可以发送邮件。 ```properties ## JavaMailSender Config spring.mail.host=smtp.mxhichina.com spring.mail.username=test@xiaov.org spring.mail.password=test? #spring.mail.properties.mail.smtp.auth=true #spring.mail.properties.mail.smtp.starttls.enable=true #spring.mail.properties.mail.smtp.starttls.required=true ## SSL Config #spring.mail.port=465 #spring.mail.protocol=smtps #spring.mail.default-encoding=UTF-8 #spring.mail.properties.mail.smtp.ssl.enable=true ``` EmailHelper支持3中类型的邮件,分别是普通文字邮件,html类型的邮件,模板邮件 ```java package org.xiaov; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.xiaov.bean.mail.MailType; import org.xiaov.extra.mail.EmailHelper; import java.util.HashMap; import java.util.Map; /** *

* *

* * @author xiaovcloud * @since 2021/2/26 19:40 */ @SpringBootTest public class EmailDemo { @Test public void testTextMail() { String title = "验证码"; String content = "您好啊,我是一封邮件"; String to = "xiaovcloud@xiaov.org"; EmailHelper.sendMail(MailType.TEXT, title, content, to); } @Test public void testHtmlMail() { String title = "验证码"; String content = "

您好啊,我是一封邮件

"; String to = "xiaovcloud@xiaov.org"; EmailHelper.sendMail(MailType.HTML, title, content, to); } /** * 当您发送的是需要定制的模板时,我们仍然支持,我们在xiaov-util-boot-start内部加入了thymeleaf模板 * 您只需要传Map类型的map就可以达到定制的效果 * 当然,您需要自己编写模板信息,并存放在springboot项目的resources/templates下 */ @Test public void testTemplateMail() { Map params = new HashMap<>(); params.put("username", "张三"); params.put("password", "1231"); String title = "验证码"; String to = "xiaovcloud@xiaov.org"; EmailHelper.sendMail(MailType.TEMPLATE, title, to, "mail/hello", params); } } ``` 模板的示例代码如下(templates/mail/hello.html),使用thymeleaf模板语法 ```html
用户名 密码
[[${username}]] [[${password}]]
``` ### FileHelper 文件 (等待更新...) ### JWTHelper 现在jwt默认只能配置`expire-time`和`secret-key`两个属性 `expire-time`默认值是60s ```properties spring.jwt.secret-key=1234567890!@#$%^&* spring.jwt.expire-time=5 #以秒为单位 spring.jwt.signature=hs256 ``` 您也可以根据您的业务需求重新定义 ```java package xyz.riceball.jwt; import io.jsonwebtoken.Claims; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.xiaov.extra.jwt.JWTHelper; import java.util.HashMap; /** *

* *

* * @author xiaovcloud * @since 2021/7/18 17:57 */ @SpringBootTest public class JWTTest { @Test public void testJWT() { HashMap map = new HashMap<>(); map.put("id", "1"); map.put("name", "张三"); String token = JWTHelper.buildToken(map); System.out.println("token-->" + token); System.out.println("token是否有效:" + JWTHelper.validateToken(token)); Claims fromToken = JWTHelper.parseToken(token); System.out.println(fromToken.get("name")); } } ``` ### MapHelper (等待更新...) ### RedisHelper 默认的设置是访问:localhost:6379 您需要自定义添加redis配置时 ,在application.properties文件中加入以下配置 根据您的配置信息更改内容,更多详细的配置同springboot集成redis ```properties # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接池最大连接数(使用负值表示没有限制) spring.redis.lettuce.pool.max-active=8 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.lettuce.pool.max-wait=-1 # 连接池中的最大空闲连接 spring.redis.lettuce.pool.max-idle=8 # 连接池中的最小空闲连接 spring.redis.lettuce.pool.min-idle=0 # 连接超时时间(毫秒) spring.redis.timeout=5000 ``` ```java package xyz.riceball.redis; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.xiaov.extra.redis.RedisHelper; /** *

* *

* * @author xiaovcloud * @since 2021/7/18 17:21 */ @SpringBootTest public class RedisTest { @Test public void testRedis() throws InterruptedException { RedisHelper.set("key", "value", 5); System.out.println(RedisHelper.get("key")); Thread.sleep(6000); System.out.println(RedisHelper.get("key")); } } ``` ### StringHelper 关于一些操作字符串的工具类客户端,可自行了解 ### TreeHelper 树形结构开发 只需要在实体类中加入id,pid,List类型的children三个属性,使用convert(List)即可 当然支持定义成其他名字的属性,使用convert(List,String,String,String)的方法 类如: ```java package xyz.riceball.tree; import lombok.Data; import java.util.List; /** *

* *

* * @author xiaovcloud * @since 2021/7/18 19:44 */ @Data public class Node { /** * 实体类id */ private long id; /** * 父节点id,没有父节点默认为0 */ private long pid; /** * 名字 */ private String name; /** * 作为父节点的子节点集合 */ private List children; public Node(long id, long pid, String name) { this.id = id; this.pid = pid; this.name = name; } } ``` 将查询到的实体添加到List集合中,然后直接查询节点的List集合 ```java package xyz.riceball.tree; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.xiaov.core.collection.ListHelper; import org.xiaov.core.tree.TreeHelper; import java.util.List; /** *

* *

* * @author xiaovcloud * @since 2021/7/18 19:47 */ public class TreeTest { @Test public void testTree() { List treeItemList = ListHelper.newArrayList( new Node(1, 0, "湖北"), new Node(2, 1, "武汉"), new Node(3, 1, "荆州"), new Node(4, 0, "浙江"), new Node(5, 4, "杭州"), new Node(6, 5, "西湖区")); try { List list = TreeHelper.convert(treeItemList); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(list)); } catch (Exception e) { e.printStackTrace(); } } } ``` ### 拦截器 共有两种拦截器 > - session 拦截器 > - token 拦截器 主要字段为`authorization` eg: authorization:'XIAOVCLOUD' 推荐您直接使用`WebMvcConfigurer`的实现类 ```java @Configuration public class WebMVCConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthSessionInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/login", "/"); } } ``` ## 配置xiaovmaven私服 配置私服后,您可以第一时间拿到最新的jar 您只要在pom文件中加入以下代码,在运行代码的时候就会下载最新的快照版本 ```xml xiaov-maven xiaov Nexus Repository http://maven.xiaovcloud.cn/nexus/repository/public/ always true ``` 此时您需要加入的是快照maven坐标,而不是本文开头的maven仓库坐标 ```xml org.xiaov xiaov-util-boot-start 1.0-alpha ``` ## 问题 - ~~redis只访问本地的localhost:3306,不能读取配置文件的远程地址~~ - ~~在web传输的时候,JWTHelper总是超时异常~~ - ~~在发送邮件的时候不抛异常,但是对方不能接收到邮件~~ - ~~将项目改为静态的之后,需要更改示例代码~~ - ~~邮件不能发送多个人,需要扩展能发送至多个人~~ - ~~OSS上传文件~~ - JSONHelper中不能json化对象 - 发送邮件增加附件功能 ## 贡献`````` - 收藏 star - 通过 Issue报告bug或进行咨询。 - 提交 Pull Request 改进`xiaov-util-boot-start`的代码。 - 注意:请在develop分支中发起合并请求,master分支不接受合并 - 在你的公司或个人项目中使用`xiaov-util-boot-start` ## 鸣谢 [奔跑的蜗牛](https://gitee.com/yjh68686)