前言
之前也学习过validate注解去校验一些参数的必要条件,这回工作中用的时候遇到了一些问题。这里都是使用spring boot框架去做的切面,省去了很多不需要的配置。这里去记录一下。
这篇去写一些最近在工作中get到的关于vi/vim命令的点,简单去记录下。
在vi编辑文件的时候,发现有时要删除很多的文件内容,这个时候去一点点删除很慢,这里get到了一个快速删除一行的技能。在打开的文件中所要删除的行连续按两次d就可以快速删除一行,然后在用:wq保存即可。
有的时候我们在查看一个文件之后,直接ctrl+z去退出了文件,当我们再用vim命令去编辑文件的时候,这时候会发现报一个没有正确关闭这个文件的冲突错误,并且你不去解决就会一直存在。
这里get到了去解决的方法,其实也是怪自己一看到一堆英文就不想看下去,这里其实已经写得很清楚了,这里提供了两种情况:
(1)有可能另一个人也在编辑这个文件,它提醒你要注意两个人同时编辑不同的地方。
(2)上一次编辑的session还在,这时候提供了解决办法:可以用recover或者vim -r 文件名去修复这个changes。
可以看到当你没正确退出时,还保持着edit session,这时候会生成两个临时文件,我这里采用的是直接删除这两个文件即可。
运行 rm -rf .fileName.* 命令之后,再次打开之后就不会有冲突。
在工作中看到了不少项目用到了拦截器,这里去总结一下spring-boot使用拦截器。拦截器是Spring提供的HandlerInterceptor(拦截器),其功能和过滤器类似,但是提供更精细的控制能力:在request被响应之前、request被响应之后、视图渲染之前以及request全部结束之后。我们不能通过拦截器修改request的内容,但可以通过抛出异常(或者返回false)来暂停request的执行。
函数式接口之前就一直在接触过,之前在github上写过关于几个函数式接口简单应用的代码,但一直没有记录在工作中的应用,这次就用Function接口优化了一次重复代码的警告。关于函数式接口不熟悉的同学,可以先看下我在github上的代码工程:java8
在最近的工作中遇到了一个做一个导出功能时遇到了一个很奇怪的事情,逻辑是先做一个export方法上传到文件服务器上,然后重定向到一个doExport方法中,这个doExport方法中是去判断这个文件是否生成(之前生成Excel文件是异步线程生成的),如果没有生成,则转到一个export.ftl的freemarker页面,这个页面中去不断reload去调用这个doExport方法,直到导出了文件。但是在本地测试的时候,总发现doExport方法会无限的将请求再转发到export方法中,然后就一直产生了无限重定向,在浏览器中会有报无限重定向而给拦截掉。
spring boot的一大特性就是自带的actuator。它是spring-boot框架提供的对应系统的自省和监控的集成功能,可以对系统进行配置查看、相关功能统计等。
1 | <dependency> |
spring-boot提供了一些常用的EndPoints
其中鉴权为true的表示访问这些endPoints是需要保护的不能随意进行访问的。如果要取消,可以设置关闭鉴权(低版本的spring-boot没有提供鉴权)
1 | management.security.enable=false |
可以看到这个监控和自省的功能是十分有用的,可以看到bean信息、dump信息、mapping信息和访问链路信息等,所以这个功能在官方文档中也说的很清楚,我们也可以通过实现HealthIndicator接口,编写自己的health接口,也可以增加自己的监控接口。
具体的还可以看一下官方文档 acautor文档
之前也用过hibernate的校验注解,但是没有去做一个总结,这里参考一篇博客去做一个总结。简述JSR303/JSR-349,hibernate validation,spring validation之间的关系。JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.constraints包下,只提供规范不提供实现。而hibernate validation是对这个规范的实践(不要将hibernate和数据库orm框架联系在一起),他提供了相应的实现,并增加了一些其他校验注解,如@Email,@Length,@Range等等,他们位于org.hibernate.validator.constraints包下。而万能的spring为了给开发者提供便捷,对hibernate validation进行了二次封装,显示校验validated bean时,你可以使用spring validation或者hibernate validation,而spring validation另一个特性,便是其在springmvc模块中添加了自动校验,并将校验信息封装进了特定的类中。这无疑便捷了我们的web开发。本文主要介绍在springmvc中自动校验的机制。
ThreadLocal是早期jdk版本中就有的一个工具,基本原理是同一个ThreadLocal所包含的对象(对ThreadLocal