Java
java
New_Q
这个作者很懒,什么都没留下…
展开
-
通过@InitBinder注解实现参数绑定
@InitBinder简介@InitBinder注解是controller级别的,一个controller实例中的所有@initBinder 只对该controller有效。@InitBinder标注的方法, 方法的参数可以有HttpServletRequest、ModelMap、WebDataBinder,一般情况下WebDataBinder就能够满足的部分的需求了。@InitBinder标注的方法是在其匹配的Controller请求执行之前执行的。WebDataBinder指定参数名称前缀bi原创 2020-05-09 13:31:09 · 721 阅读 · 0 评论 -
Controller层接收Date类型参数进行统一转换
需求当后台接收参数类型为Date时,前端传过来的参数类型为String:“2020-05-08 17:08:10”,这样就会出现参数类型不匹配的问题,这种情况下我们就要对接收Date类型参数进行统一处理。Java中提供了PropertyEditorSupport来进行类型转换,我们只需要继承这个类,并且重写它主要的方法就行了。PropertyEditorSupportPropertyEditorSupport中通过setAsText(String text)方法来实现转换逻辑,然后调用setValue原创 2020-05-08 17:57:39 · 2564 阅读 · 0 评论 -
通过@ControllerAdvice实现全局异常处理
@ControllerAdvice@ControllerAdvice是Spring提供的一个可以对Controller进行增强的注解,通过value参数指定对哪些包下的controller进行增强。我们可以使用这个注解来进行全局异常处理或者数据绑定。定义BaseControllerAdvice/** * ControllerAdvice - 基类 */@ControllerAdvice...原创 2020-05-08 14:19:20 · 267 阅读 · 0 评论 -
自定义@CurrentUser参数解析获取当前登录用户
HandlerMethodArgumentResolver简介HandlerMethodArgumentResolver接口有以下两个方法 //是否支持要转换的参数类型 boolean supportsParameter(MethodParameter parameter); //如果支持的话进行转换 @Nullable Object resolveArgument(MethodP...原创 2020-05-07 14:52:09 · 1499 阅读 · 0 评论 -
通过Reflections获取注解内容
简介前段时间做接口权限管理,需要扫描项目内所有用到权限注解的方法,并获取注解里的内容。上网查阅资料后发现通过Reflections可以满足需求。pom依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</art...原创 2020-04-27 11:48:09 · 1379 阅读 · 1 评论 -
自定义注解实现记录操作日志
应用场景在开发过程中我们会遇到需要使用自定义注解的需求,比如记录后台操作日志、接口权限检查等。元注解用来修饰注解的注解叫做元注解。常用的元注解有@Target、@Retention、@Documented、@Inherited@Target 定义注解的使用目标,也就是能被哪些Java元素所使用。它需要 ElementType 枚举来定义。/** * @Target **/@Doc...原创 2020-04-20 19:19:08 · 576 阅读 · 0 评论 -
@JsonView返回属性过滤
简介@JsonView可以自定义接口返回实体的某些属性。比如列表接口只需要返回几个重要的属性,而详情接口要返回所有的属性,这个时候就可以用到@JsonView注解。自定义视图/** * 视图 */public class View { /** * 列表视图 */ public interface Simple { } /** ...原创 2020-04-20 14:25:19 · 259 阅读 · 0 评论 -
通过Spring Data Elasticsearch操作ElasticSearch
Java操作ES的方式Elasticsearch提供了两种java语言操作elasticsearch的API,一种是Java Transport Client,一种是Java REST Client。Java REST Client又分为Java Low Level REST Client和Java High Level REST Client,Java High Level REST Clie...原创 2020-04-14 13:43:36 · 336 阅读 · 0 评论 -
编号生成之snowflake雪花算法
简介snowflake算法来源于Twitter,它能满足在分布式环境中生成唯一且呈递增趋势的纯数字编号的需求,并且不需要数据库等第三方的支持。雪花算法每秒大约能够生成26万个编号。其缺点是依赖系统时钟,如果某台机器的时钟回拨或每台机器时钟不一致的情况下,会造成编号重复或乱序的情况。实现原理使用snowflake算法生成的编号是一个64bit大小的整数。 * 1位符号位,0代表正数,1代表...原创 2020-03-29 11:04:07 · 967 阅读 · 0 评论 -
编号生成之Hilo高低位算法
高低位算法是Hibernate的一种主键生成策略,使用一个高位值和一个低位值,然后把算法得到的两个值拼接起来作为数据库中的唯一主键。Hilo算法需要额外的数据库表的支持,但不需要每次生成都去查询数据库,查询数据库的频率取决于maxLo。 创建数据库表CREATE TABLE `sn` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `last...原创 2020-03-28 17:20:32 · 984 阅读 · 0 评论