springboot
文章平均质量分 70
daodfs1
这个作者很懒,什么都没留下…
展开
-
Springboot项目使用原生Websocket
*** 机器人模块WebSocket接口* 每一次websocket请求,RobotWebSocketServer都是一个新的实例,所以成员变量是安全的* 以致虽然类由@Component注释,但不可使用@Autowired等方式注入bean/*** 所有初始化操作都写在@OnOpen注释的方法中* 连接成功log . info("连接成功:{}, {}" , id , this . user . getUserCode());原创 2023-06-21 13:45:13 · 2718 阅读 · 0 评论 -
java原生代码验证xml是否存在语法错误
*** 验证xml文档是否存在语法错误* @throws RuntimeException 校验程序出错* @throws IllegalArgumentException 校验未通过try {if(!throw new IllegalArgumentException("xml:" + xml + "语法错误" , errorHandler . getFatalErrorExceptions() . get(0));原创 2022-10-25 18:39:07 · 944 阅读 · 0 评论 -
通过xsd校验xml
throw new NullPointerException("未找到" + xsdPath + "校验文档");valid) {throw new RuntimeException("校验程序出错");throw new RuntimeException("校验程序出错" , e);} if(!原创 2022-09-07 15:50:34 · 2060 阅读 · 1 评论 -
基于LibreOffice转换文档
LibreOffice开源免费,支持Windows、Linux、MacOS平台,需要先在服务器上安装LibreOffice软件,如果转换结果出现乱码,则还需要在服务器上安装字体。安装过程,略本文重点在于java代码的封装,其中使用过程基于SpringBoot不需要手动启动LibreOffice软件,一切由框架掌握,转换效果不输其它框架。...原创 2022-08-07 00:07:30 · 1361 阅读 · 0 评论 -
OpenFeign根据服务名动态调用服务
本文作为springboot注解Aspect文章的补充,切面拦截方法,将方法所有信息及服务名称持久化到数据库。审批的时候,从数据库获取服务名称动态调用服务。实体类示例中的响应实体类@Getter@Setterpublic class Response<T> { private String code; private String msg; private String description; private T data;}示例中的方法参数原创 2022-03-28 11:31:23 · 3606 阅读 · 1 评论 -
Spring获取参数的泛型信息
本文作为springboot注解Aspect文章的补充,让使用者不再手动指定拦截方法的参数类型。最根本的是使用spring的 ResolvableType 工具类获取方法的参数类型Jackson工具类package com.proc.util;import java.lang.reflect.Type;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.JavaT原创 2022-01-16 14:41:26 · 1418 阅读 · 0 评论 -
springboot注解Aspect
目录目标实现POM一些实体类CheckedParamProcessDbModel测试用的入参对象一些工具类JacksonCanonicalUtilStringZipUtilBase64UtilSpringBootBeanUtilProcessBeanUtilCheckedTransmitableUtilPrivateTransmitableUtil一些BeanPostProcessTestCheckPostProcessAspect注解切面类 CheckedAop线程池配置持久化service审批用的ser原创 2022-01-08 22:13:40 · 1940 阅读 · 0 评论 -
Spring 注入多例 Bean
如何在单例 bean 中注入多例 Bean ?目录配置多例 Bean再来个单例 Bean错误示例方式一 使用 @Lookup方式二 使用 ObjectProvider@Lookup 的局限及 ObjectProvider 的强大使用 @Lookup 注入使用 ObjectProvider 注入结语配置多例 Beanpublic interface ProtoService { void test1(); void test2();}//使用 @Service 注册@Service@原创 2021-11-14 00:50:51 · 5861 阅读 · 0 评论 -
Spring boot 当@Primary遇到循环依赖
今天debug代码时,遇到一个坑public interface LoopService { void testLoop(); void testInnerLoop();}@Servicepublic class DefaultLoopService implements LoopService { private static final Logger log = LoggerFactory.getLogger(DefaultLoopService.class); @Overri原创 2021-11-10 22:09:35 · 662 阅读 · 0 评论 -
使SpringBoot配置文件application.properties支持中文
目录版本说明为什么不支持中文PropertySourceLoader接口PropertiesPropertySourceLoader类OriginTrackedPropertiesLoader类重写读取application.properties文件的逻辑1.创建OriginTrackedPropertiesLoader文件2.创建PropertiesPropertySourceLoader文件3.创建spring.factories文件测试最后版本说明本文不完全基于springboot-2.4.5,各原创 2021-10-14 14:42:16 · 1271 阅读 · 0 评论 -
Spring Aspect切面执行顺序(一)
目录@Aspect 5种通知单一切面新版本执行顺序旧版本执行顺序多切面新版本执行顺序旧版本执行顺序@Aspect 5种通知通知类型类型名称执行时间点可获取返回值目标方法异常时是否会执行@Before前置通知方法执行之前否是@Around环绕通知环绕方法执行是自己控制@After后置通知方法执行之后否是@AfterReturning返回通知方法执行之后是否@AfterThrowing异常通知方法抛出异常之后否是原创 2021-08-30 20:26:21 · 1409 阅读 · 0 评论 -
springboot以代码的方式配置sharding-jdbc水平分表
多数项目可能是已经运行了一段时间,才开始使用sharding-jdbc。本教程就如何配置sharding目录关于依赖shardingsphere-jdbc-core-spring-boot-startershardingsphere-jdbc-core数据源DataSource原DataSourceShardingJdbcDataSource完整的ShardingJdbcDataSource配置分表策略主要的类其他的分表配置类groovy行表达式说明properties配置结语关于依赖sharding原创 2021-08-17 02:20:04 · 568 阅读 · 2 评论 -
基于Redis获取全局唯一序列
目录原理缺点使用示例核心逻辑Redis分布式锁锁key的枚举类分布式锁工具类基于哨兵模式Jedis工具类的部分代码原理前提redis全局唯一,可以是哨兵模式。redis每天按日期为key保存序列已被使用的值的限。客户端每次从redis申请5000个序列值,申请到的序列值用完后或客户端重启后,再从redis申请5000个序列值,这样只要客户端没有可用的序列,就从redit中申请。缺点客户端重启,会浪费掉原先申请到的序列;redis服务器未将序列实时保存到硬盘时,重启redis,可能造成大量序列冲突。原创 2021-05-10 17:18:09 · 809 阅读 · 0 评论 -
一劳永逸 让SpringBoot项目所有框架使用logback打印日志
目录Maven全局排除依赖Maven排除依赖的方式有三种使用同名空jar包替换的方式,实现全局排除依赖功能pom.xml配置spring-boot-starter-loggingjcl-over-slf4j替换commons-logginglog4j-over-slf4j替换log4jjul-to-slf4j替换java.util.logginglog4j-to-slf4j替换log4j-slf4j-impllogback-spring.xml部分配置最后声明Maven全局排除依赖Maven排除依赖的方原创 2021-04-29 17:36:44 · 455 阅读 · 0 评论 -
SLF4J官网统一日志框架教程(翻译)
SLF4J官网http://www.slf4j.org/legacy.html翻译:桥接旧版API通常,您依赖的某些组件依赖于SLF4J以外的日志API。 您可能还假设这些组件在不久的将来不会切换到SLF4J。 为了处理这种情况,SLF4J附带了几个桥接模块,这些模块会将对log4j,JCL和java.util.logging API的调用重定向,就好像是对SLF4J API进行的操作一样。 下图说明了这个想法。从Jakarta Commons Logging(JCL)迁移到SLF4Jjcl-翻译 2021-04-29 02:17:02 · 1991 阅读 · 0 评论 -
springboot集成springdoc-swagger3
目录springdoc官网swagger2与swagger3注解对照maven依赖swagger3的开启和关闭swagger3的配置实体类示例Controller示例附 Pagination.java示例Swagger UI效果Swagger UI默认访问地址springdoc官网https://springdoc.org/swagger2与swagger3注解对照swagger3注解在 io.swagger.v3.oas.annotations 包中,不要导错swagger2swagg原创 2021-01-30 22:01:43 · 2921 阅读 · 0 评论 -
自定义Validation注解验证枚举值
不说了,上代码定义注解package com.xxx.common.validate;import static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.ElementType.PARAMETER;import static java.lang.annotation.Retenti原创 2021-01-10 23:45:31 · 808 阅读 · 0 评论 -
Springboot2以代码的方式统一配置Jackson
目录说明6个序列化和反序列化规则Jackson统一配置类Jackson工具类结语说明本文主要配置Jackson对Long、Date、LocalDate、LocalDateTime的序列化和反序列化。由于js中整数可精确表示范围小于java Long的范围,故将Long序列化为String,反序列化Jackson会自动处理String转Long,故不需要显式配置。由于时间戳在各语言间的兼容性良好,故将Date、LocalDate、LocalDateTime序列化为Long(目前时间戳类的Long类型原创 2021-01-10 22:33:02 · 633 阅读 · 0 评论 -
springboot整合JSR303的快速失败和国际化
目录版本说明解决了什么问题代码实例pom.xml验证实体类rest接口测试接口核心代码国际化类配置类测试1测试2备注版本说明springboot 2.2.6.RELEASEhibernate-validator 6.0.18.Final (与springboot版本对应)解决了什么问题org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 er原创 2020-05-20 00:50:00 · 1074 阅读 · 0 评论 -
JSR303标准注解说明
目录java标准注解java标准注解Annotation注解说明支持的数据类型null的返回值额外的方法备注DecimalMax元素必须是一个数字,其值必须小于或等于指定的最大值BigDecimal、BigInteger、CharSequence、byte、Byte、short、Short、int、Integer、long、LongtrueString value();元素的值必须小于等于valueboolean inclusive() default true;如果原创 2020-05-18 20:57:14 · 1195 阅读 · 2 评论 -
springboot控制静态资源的缓存
目录说明方法一说明前后端分离的项目请绕道,本文只针对springboot + thymeleaf的项目,使用md5策略。方法一写一个全局的@ControllerAdvice控制类import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bin原创 2020-05-12 23:49:22 · 1449 阅读 · 0 评论 -
springboot返回统一数据格式
目录返回数据格式包路径核心代码ResultCode.javaResult.javaErrorResult.javaServiceException.javaJsonUtil.javaGlobalExceptionHandler.javaResponseHandler.java测试代码UserVO.javaUserController.java返回数据格式{ "status":10000, /...原创 2020-05-05 22:28:18 · 475 阅读 · 0 评论