2020-01-23正常的文章时间戳作为salt时的精度问题前言在web项目中采用用户注册时的时间戳作为密码加密的salt:123public String getSalt(User user) { return String.valueOf(user.getRegistrationTime().getTime()/1000L);}数据库中保存注册时间戳的字段类型使用Timestamp(0)即10位精确到的秒时间戳注册用户逻... 阅读全文…
2020-01-17正常的文章SpringBoot Aop+注解实现动态多数据源前言Spring提供了AbstractRoutingDataSource类以方便开发者实现多数据源,看一下AbstractRoutingDataSource#getConnection()的源码:1234@Overridepublic Connection getConnection() throws SQLException { return determineTargetDat... 阅读全文…
2020-01-16正常的文章SpringBoot时间格式化总结Json中的时间对于json形式的请求或响应(content-type=application/json),格式化时间有如下方法:配置spring.jackson.date-format使用@JsonFormat自定义ObjectMapper通过Jackson2ObjectMapperBuilderCustomizer自定义ObjectMapper自定义com.fasterxml.jacks... 阅读全文…
2020-01-15正常的文章SpringBoot时间类型参数绑定和序列化为Json时格式化的问题前言在使用Spring进行web开发时经常会遇到前后台互相传值的问题,大致分无非就是下面两种情况:将参数以及值直接放在request的请求体(POST)或者url(GET)中。将参数以及值以JSON的形式发送(POST或者GET)到服务端。Spring其实对前后台传值时参数的绑定提供了支持,像我们平时接触的转换器Converter以及消息转换器HttpMessageConverter的工作就... 阅读全文…
2019-12-27正常的文章再谈SpringDataJPA前言在 关于SpringBoot使用JPA进行更新操作 这一篇文章中曾提到了关于jpa使用save方法更新记录时会出现当有些参数为null时,save操作会用null覆盖数据库中的字段的情况,通常我们的需求是动态的去更新记录,而不是全部覆盖,所以对比起Mybatis的动态sql,Jpa不太灵活的特性就暴露出来,事实上,对于动态更新虽然实现上麻烦了点,但还是能操作一下的。以前的方法对于以前实现... 阅读全文…
2019-12-26正常的文章SpringBoot 拦截器,过滤器,转换器,消息转换器的注册环境:SpringBoot 2.2.2拦截器方式一:写一个配置类,实现WebMvcConfigurer接口并实现addInterceptors方法过滤器方式一:使用@Component或@Bean配合进行注册方式二:当使用嵌入式web服务器时使用@ServletComponentScan配置扫描,同时可以用来注册filter、servlet和linstener转换器方式一:使用@Compon... 阅读全文…