几个说明:
properties配置文件中,spring.messages.basename必须要加classpath前缀。如 spring.messages.basename=classpath:i18n/messages;必须要手动配置MessageSource,springboot不会自动配置之;- 如果使用
MessageSource.getMessage()方法,第一个参数的引用形式为"code",而不是"{code}"或者"${code}"。如messageSource.getMessage("test.msg", null, Locale.getDefault()); - 在配置
LocalValidatorFactoryBean之后,才可以在javax.validation.constraints包下的注解(@Size,@NotNull...)下的message属性中使用"{code}"的形式声明校验提示信息。如
@NotNull(message = "{leftTime.not.null}"); - springMVC的locale配置和JVM的locale配置不一样,在application.properties中配置的
spring.mvc.locale=zh_CN实际上配置的是WebMvcProperties,在获取消息时,locale信息应该使用webMvcProperties.getLocale()获取而不是使用Locale.getDefault()获取。
MessageSource is a powerful feature available in Spring applications. This helps application developers handle various complex scenarios with writing much extra code, such as environment-specific configuration, internationalization or configurable values.
One more scenario could be modifying the default validation messages to more user-friendly/custom messages.
In this tutorial, we'll see how to configure and manage custom validation MessageSource in the application using Spring Boot.
阅读全文 ...Logback是Java应用中使用最广的日志框架之一,它是
其前辈框架Log4j的替代者。相比Log4j,Logback在日志处理速度、配置多样性、对旧日志文件的处理灵活性上均要优于Log4j。
这篇文章将介绍Logback的主要组成结构并指导你使用Logback构建更好的程序。
阅读全文 ...现在流行在项目中使用
swagger对接口进行测试,这确实很方便、直观。
但是MockMvc作为spring-test包中指定的测试框架,在没有使用swagger的项目中,使用其进行测试是很好的选择。
阅读全文 ...mybatis自 3.4.5 开始,已经支持使用LocaldateTime作为时间查询入参,映射类型为TimeStamp,参考地址:
https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers
1 前言
#
在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病。
在Java SE 8前,日期时间工具库在java.util包中,包括:
java.util.Date:表示日期和时间java.util.Calendar以及其实现子类:表示各种日历系统,常用的是格林威治日历java.util.GregorianCalendarjava.util.TimeZone以及其实现子类:表示时区偏移量和夏令时
以及辅助其进行格式化和解析的工具库在java.text包中,包括:
java.text.DateFormat:格式化日期时间和解析日期时间的工具抽象类java.text.SimpleDateFormat:DateDateFormat的实现
阅读全文 ...本文介绍在如何在
xxl-job中使用创建并使用分片任务。
xxl-job是国内开源的一款轻量级分布式任务调度平台,开发者是大众点评的工程师,其目前维护一个
开源社区,里面还有很多已经发布或尚在孵化的开源项目。
阅读全文 ...这篇文章介绍了几种常见的使用printf()方法进行格式化输出的方法。
printf()方法隶属于java.io.PrintStream类,提供了和C语言中相似的格式化字符串输出的方法。
阅读全文 ...背包问题其实属于
动态规划( Dynamic Programming )问题的一种。动态规划的手段是将大问题拆解为多个小问题,小问题解决之后,大问题也就随之而解。
背包问题的典型描述是:
给定n种物品和一背包。物品i的重量为wi,其价值为vi,背包的容量为c。
问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?
阅读全文 ...开发过程中,或多或少会碰到需要使用数据库事务的业务场景,而Spring框架提供的能力使得开发者无需过多地关注事务本身,这带来诸多便利,但也带来弊端:开发者只知其貌,而不知其理,一旦Spring框架抛出异常,便往往手足无措。本文简单地介绍了MySQL事务相关的基本概念,使用例证阐述了不同事务隔离级别下MySQL的数据可见性,简单讨论了MySQL如何保证数据一致性。有了这些基本的概念,遇到事务与数据库锁相关的问题时,开发者能够多一点思考。
阅读全文 ...简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
阅读全文 ...海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!
下面我们将分为几个方面来介绍布隆过滤器:
- 什么是布隆过滤器?
- 布隆过滤器的原理介绍。
- 布隆过滤器使用场景。
- 通过 Java 编程手动实现布隆过滤器。
- 利用Google开源的Guava中自带的布隆过滤器。
- Redis 中的布隆过滤器。
阅读全文 ...