
Spring
Moshow郑锴
Powered by Core iMoshow
-
原创 spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘
springboot有接口日期转换的经典问题,给Entity加`@JsonFormat`解决了输出`json日期格式的输入输出`问题,但是解决不了非@RequestBody/也就是`普通表单`提交的日期格式问题,这个时候就需要加`@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)`2021-01-03 23:50:09269
0
-
原创 SpingBoot/JAVA实现给图片加水印功能(通过thumbnailator库)
前言最近某项目有个加水印的需求,JAVA实现给已上传的图片增加水印并输出的功能,图片A+水印B=合成带水印缓存图片C(就是不需要保存到硬盘,不占用空间),目前网上的解决方案挺多但是挺乱,于是趁机整理了一份简洁版供大家使用。这里借助了一个很强大的Thumbnails库 。图片A水印B效果图CMAVEN<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator --><!-- https://githu2020-12-29 01:08:12207
0
-
原创 springboot2集成ehcache缓存(纯Java的进程内缓存框架)
springboot2+ehcache集成攻略与教程,,,先来看看ehcache缓存与redis缓存的区别----- ehcache直接在`jvm虚拟机`/`java进程`中缓存,可以理解为缓存在内存中,速度快,效率高;但是缓存`共享麻烦`,集群分布式应用不方便。可以直接`单独使用`,集成于项目内或者第三方库,多用于`内部缓存` ,或者一般没有微服务的单实例小项目。 - redis是通过`socket`访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。。。2020-10-24 08:48:291866
0
-
原创 SpringBoot集成EasyPOI实现excel导入导出功能
SpringBoot可以快速使用EasyPOI进行便捷的导入导出,这里是一份简单的教程,包含导入和导出部分。一段controller代码+一个@Excel实体类注解,轻松实现excel导入导入。2020-10-12 17:36:511888
0
-
原创 ehcache:Null key returned for cache operation问题解决方法
前言今天一个上线许久的系统突然无法新增证书,但是不是所有都不允许新增,只是编号重复的无法新增。从逻辑上想,我是设置了编号重复判断,但是该业务判断逻辑未生效,从缓存上将,会不会是id=null导致的问题。报错详情:java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) Builder2020-09-26 00:16:09620
0
-
原创 Java获取小程序带参二维码并保存到本地
Java/SpringBoot下载并保存带参数的小程序二维码,用户直接扫描带参二维码就进入小程序,自动根据参数完成部分业务。这个时候就需要用到微信小程序提供的二维码接口 `wxacode.getUnlimited` 。网上介绍的很多方法有些过时了,有些不科学,调用起来不方便,所以自己也总结了一份出来。虽然很久之前直接用`jfinal+jfinal-wx`写的,几句代码就搞定了,但是最近需要迁移项目到`SpringBoot2`,所以就踩了个坑顺便总结一下,确实找了大半天。2020-07-25 23:06:50666
2
-
原创 Only no-arg methods may be annotated with @Scheduled报错
问题背景今天在弄一个手工爬虫框架的时候,由于有个功能如下:在列表界面点击抓取,进行手工抓取后台根据application.yml设置的定时任务自动触发抓取任务 /** * 广东省政府采购中心 */ @PostMapping("/fetchCGZX") @Scheduled(cron="${scheduler.fetch}") public ReturnT fetchCGZX(boolean manual){ if(!manual2020-07-04 11:00:461157
0
-
原创 maven设置阿里云镜像加速
在国内用mvn的中央仓库太慢了,如果想加速的话,可以切换到阿里云maven镜像库在POM.xml里面定义阿里云maven&amp;lt;repositories&amp;gt; &amp;lt;repository&amp;gt; &amp;lt;id&amp;gt;alimaven&amp;lt;/id&amp;gt;2018-04-12 13:54:121786
0
-
原创 freemarker数字显示问题(超过1000会加逗号分隔)
前言freemarker在数字回显时,如果数字超过999,会自动用 , 分割开,例如 2020 变成了 2,020,然而,此时传递到后台的时候,并不会按照int/long处理,而是当作String字符串处理,所有会报类型不匹配的异常。<input type="hidden" name="userId" value="${(user.userId)!number}" class="layu...2020-03-16 00:39:581432
0
-
原创 JAVA 利用ASCII码偏移(来自IDEA免费激活码游戏)
前言最近idea风风光光激活码失效,于是官方推出了一系列游戏,DD大哥也给我们解析了很多20/03/13 JetBrains 第二轮:再为免费全家桶续命三个月20/03/12 免费获取 Jetbrain 全家桶使用兑换码的正确姿势!兑换地址https://www.jetbrains.com/promo/quest/解决方案其中第一个任务,你需要到MPS-31816去获取一个线索。...2020-03-15 13:22:34734
0
-
原创 动态获取tomcat启动端口,控制台打印项目访问地址
前言正常我们输出项目的访问地址,都是通过在@SpringBootApplication的启动类中增加一个log.info来输出项目地址.感谢网友@Gao Hang Hang 则为我们带来一个动态获取tomcat端口的改造.非常有意思,所以share一下.原始方法package com.softdev.system.generator;import lombok.extern.slf4j....2019-12-30 10:26:29912
0
-
原创 Spring Boot2+JPA之悲观锁和乐观锁实战
什么时候用悲观锁或者乐观锁: 1. `悲观锁`适合`写多读少`的场景。因为在使用的时候该线程会独占这个资源,就适合用悲观锁,否则用户只是浏览文章的话,用悲观锁就会经常加锁,增加了加锁解锁的资源消耗。2.`乐观锁`适合`写少读多`的场景。由于乐观锁在发生冲突的时候会回滚或者重试,如果写的请求量很大的话,就经常发生冲突,结合事务会有经常的回滚和重试,这样对系统资源消耗也是非常大。2019-11-15 16:13:151962
3
-
原创 js复制文本到粘贴板(Clipboard.writeText())
前言js如何复制文本到粘贴板呢,网上所说的各种复制。。在Chrome都没用。网上的代码基本思路是通过 window.clipboardData.setData('Text',textVal)这个 对象来操作的。可是都不work。/*** 复制代码 */$('#btnCopy').bind('click', function (e) { if (!$.isEmptyObject...2019-11-14 22:43:192002
0
-
原创 探索StringUtils3之StringUtils.isEmpty()和StringUtils.isBlank()的区别
StringUtils中有很多方法,常用的也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有`isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank`的存在, come on ,让我们一起来探索`org.apache.commons.lang3.StringUtils;`这个工具类.#isEmpty系列#isBank系列#其他方法2019-11-05 15:02:02716
0
-
原创 spring-boot-2.0的pom.xml
这是一份可以运行的spring-boot整合pom,,,前段时间研究和学习用的,,暂时懒得整理,,其他的暂时没整理,放上来先。已添加阿里云maven镜像地址,如果不需要mybatis-plus可以屏蔽掉先。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4...2018-04-16 10:25:404589
0
-
原创 eclipse安装JPA插件并添加JPA支持
JPA与ORM什么关系ORM是JPA规范中的一个体现思想,JPA规范包含了ORM,Sun公司为了简化现有Java EE和Java SE应用的对象持久化的开发工作,整合ORM技术,结束现在Hibernate、iBATIS、TopLink等ORM框架各自为营的局面,提出了新的JPA ORM规范。什么是JPAJPA是Java Persistence API的简称,中文名Java持久层A...2018-04-18 16:50:497704
0
-
原创 SpringData-JPA操作指南
JPA指南分为3个部分:jpa注解详解jpa继承的Repository类详解jpa查询指南(单体查询+多表查询)JPA注解@Table 标注类对应的表 若表名和类型相同时,省略@Table,比如类Users 和表 users; 若不相同时,必须有@Table,并设置name,为该类对应的表名。@Table(name=”users”) 对应的表@Entity 标注实...2018-04-22 23:09:03754
0
-
原创 springboot2.0整合shiro攻略
Shiro是什么 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。简单的讲,Shiro是一个Java平台的开源权限框架,用于认证和访问授权。Shiro三个核心组件Subject, SecurityManager 和 R...2018-04-30 20:27:2814712
2
-
原创 Spring-Shrio权限控制Realm实战
用户与角色实体Role.java@Data@Entitypublic class Role { @Id @GeneratedValue private Integer id; private Long userId; private String role;}User.java@Data@Entitypublic cla...2018-05-01 00:09:152815
0
-
原创 JPA多表关联查询
JPA多表映射一般来说有两种方法,旧传统,Hibernate的时候是采用的对象关联的方式,但是那种太out了也太杂乱,还要考虑懒加载这东西。另外一种是跟mybatis多表关联一样,搞多一个新对象来做映射,达到多表关联的目的。以下是JPA的一个实操例子,仅供参考public interface QueueRepository extends JpaRepository<Queu...2018-04-23 23:15:242518
0
-
原创 springboot2使用fastjson中文返回问号问题处理
首先配置FastjsonConverter,核心是设置utf-8的编码。 其次,返回String是会乱码的,这个bug一直都在,但是返回其他object是不会乱码的。所以可以根据接口的请求情况,封装一个返回类,例如我们用ApiReturnObject/** * 添加fastjson的转换 */@Configurationpublic class FastjsonConverter...2018-04-24 00:54:071832
0
-
原创 html页面调用BasePath项目路径
BasePath项目路径,是特别游泳的类,放到request里面,在html页面就可以直接用 //放入basePath,供html页面调用 request.setAttribute(“basePath”, BasePath.getBasePath(request)); //html页面用freemarker去调用 ${basePath}xxxx/xxx去调用,例如我请求http://1...2018-04-20 14:09:195310
11
-
原创 SpringBoot2之PUT请求接收不了参数的解决办法
SpringBoot2之PUT请求接收不了参数的解决办法,这个问题,关乎两个Filter过滤器,是spring3和3.5之后提供的,目的就是解决RESTful中PUT请求或者其他请求的问题。下面请看详细内容HiddenHttpMethodFilter html中form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3添加了一个过滤器,可以将这些...2018-05-02 23:29:186621
4
-
原创 RESTful架构理解
什么是REST? REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,...2018-05-02 23:47:50222
0
-
原创 基于hutool和POI的excel导入工具类
excel导入也可以很简单,利用POI进行导入,以及强大的hutool工具类,再加上对业务的理解,就可以封装成一个超级好用的业务类了。maven依赖 <!-- Hutool超级工具类 http://hutool.mydoc.io/ --> <dependency> <groupId>cn.hu...2018-05-03 16:45:1822529
1
-
原创 SpringBoot2.0集成Swagger2,生成RESTful API在线文档接口
什么是swaggerswagger是一个流行的API开发框架,这个框架以“开放式API声明”(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计、编码和测试,几乎支持所有语言)。OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是GET还是POST请求啊,有哪些参数哪些header啊,都...2018-05-10 11:49:1919385
7
-
原创 JPA事务问题Executing an update/delete query
如果JPA提示Executing an update/delete query,那是一定是因为Service层没有加@Transactional和再方法加@Modifying吧。异常场景spring-boot2+jpa执行新增修改删除操作时:public interface UserRepository extends JpaRepository<User , Integer...2018-04-26 10:37:2132226
10
-
原创 JPA的事务注解@Transactional总结
@Transactional事务使用总结:异常在A方法内抛出,则A方法就得加注解多个方法嵌套调用,如果都有 @Transactional 注解,则产生事务传递,需要 Propagation.REQUIRED如果注解上只写 @Transactional 默认只对 RuntimeException 回滚,而非 Exception 进行回滚如果要对 checked Exceptions 进...2018-04-26 13:55:1511484
0
-
原创 SpringBoot2.0集成WebSocket,实现后台向前端推送信息
什么是WebSocket?- 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? - 答案很简单,因为 HTTP 协议有一个缺陷:***通信只能由客户端发起***,HTTP 协议做不到服务器主动向客户端推送信息。https://github.com/moshowgame/spring-cloud-study/tree/master/spring-cloud-study-websocket2018-05-10 22:54:29283930
394
-
原创 SpringBoot2.0读取yml配置文件的值(application.yml)
由于项目需要,我们有时候会把一些动态的参数配置放置在yml文件里,然后对其进行访问。这个时候,就需要在SpringBoot2.0下读取YML文件的属性值maven依赖&lt;!-- 支持 @ConfigurationProperties 注解 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.spr...2018-05-17 16:56:549098
0
-
原创 @PathVariable注解,让spring支持参数带值功能
@PathVariable的作用获取URL动态变量,例如 @RequestMapping("/users/{userid}") @ResponseBody public String getUser(@PathVariable String userid){ return "userid=" + userid; }@PathVaria...2018-05-04 16:59:186035
0
-
原创 SpingDataJPA之ExampleMatcher实例查询
ExampleMatcher是SpingData-JPA中好玩的一个东西ExampleMatcher实例查询三要素实体对象:在ORM框架中与Table对应的域对象,一个对象代表数据库表中的一条记录,如上例中User对象,对应user表。在构建查询条件时,一个实体对象代表的是查询条件中的“数值”部分。如:要查询姓“X”的客户,实体对象只需要存储条件值“X”。匹配器:ExampleMa...2018-05-11 15:57:4940235
9
-
原创 SpringBoot之跨域过滤器配置允许跨域访问
如果前端提示”Access-Control-Allow-Origin”,那么需要配置跨域过滤器允许跨域访问。import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servl...2018-05-18 15:17:335952
0
-
原创 Ajax之RESTful风格的PUT请求
之前一直用ajax的$post方法请求api接口,那么遇到项目RESTful改造,那么应该怎么破呢? 莫慌,且用以下方法即可。$.ajax({ url :"${basePath}queue/call/"+checkWindow+"/"+checkNumber+"/1", // 处理的请求路径 type : "...2018-05-07 00:26:591856
0
-
原创 MyBatis-Generato代码生成器(独立版)
项目背景这个是2014年2015年在mybatis大规模应用的时候自己研究出来的一个mybatis代码生成器,好久没有用了,官方也没有怎么大规模更新,毕竟好用的民间工具太多,好用的是大家的思维和sql。mybatis的强大之处在于把任何复杂的sql,包括多表关联,包括多重计算,处理之后映射到任意一个实体上,以达到查询的目的。相关资料下载 - 百度网盘: https://pan.ba...2018-05-19 17:31:3116592
6
-
原创 SpringBoot2集成Druid配置
=。=补发一下这个教程,之前没时间放什么是Druid?Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。而且Druid已经在阿里巴巴部署了超过600个应用,经...2018-05-13 23:21:2836072
15
-
原创 java.lang.IllegalArgumentException: The valid characters are defined in RFC 7230 and RFC 3986
错误提示java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986错误分析当在浏览器中访问时 URL中带有特殊字符,如花括号冒号时,就会出现这个错误。1、去除...2018-05-07 14:55:59789
0
-
原创 SpringDataJPA之Specification复杂查询
前言继上次SpringData-JPA之ExampleMatcher实例查询使用一会之后发现ExampleMatcher对日期的查询特别糟糕,所以才有了Specification查询的研究。实现对应的Repository需要实现JpaSpecificationExecutor接口public interface EventRepository extends JpaReposito...2018-05-14 14:54:2135489
4
-
原创 SprigData-JPA之Query进行复杂查询并映射到自定对象(非数据库字段用@Transient注解)
场景介绍有时候用JPA的时候,想拥有mybatis如此轻松的映射,将一堆复杂场景的sql语句映射到一个java类来返回。而JPA本身是很坑的,Query之支持简单查询,复杂查询需要去构造Specification来进行复杂查询。但是=。= 我就不!!!我就要用Query进行复杂查询。来吧,ShowTime。首先,介绍一下场景,就是有这么一个接口,参数是传入窗口号和状态,查询排队的队列。主...2018-05-15 22:49:2515408
4
-
原创 PgSQL-JDBC:"org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作"问题
2018-05-15 23:16:44.539 INFO 4420 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect2018-05-15 23:16:44.688 INFO 44...2018-05-16 15:41:228590
2