Java
Spring声明式事务的使用
1 从@Transactional注解开始
#
@Transactional注解是使用spring-transaction的最便捷方式。也是使用Spring框架开发最先接触的内容。
当你在一个服务的方法上使用@Transactional注解时,意味着你希望为此方法开启事务支持。如果你的项目成功配置了数据源和事务管理器,Spring会为此方法使用如下默认设置开启事务:
在SpringBoot中使用MessageSource
几个说明:
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()1获取而不是使用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记录日志
Logback是Java应用中使用最广的日志框架之一,它是 其前辈框架Log4j的替代者。相比Log4j,Logback在日志处理速度、配置多样性、对旧日志文件的处理灵活性上均要优于Log4j。
这篇文章将介绍Logback的主要组成结构并指导你使用Logback构建更好的程序。
...Java正则匹配一例
在SpringBoot项目中使用MockMvc进行接口测试
现在流行在项目中使用 swagger对接口进行测试,这确实很方便、直观。
但是MockMvc作为spring-test包中指定的测试框架,在没有使用swagger的项目中,使用其进行测试是很好的选择。
...Java8日期和时间API
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的实现
Java新日期时间包的使用
参考: unable-to-obtain-localdatetime-from-temporalaccessor-when-parsing-localdatetime
快速开始:
1@SuppressWarnings("all")
2public class JTSimpleIntro {
3 static String DATE_TIME_FORM = "yyyy-MM-dd HH:mm:ss";
4
5 static void parseDateTimeString(String yyyyMMdd_HHmmss) {
6 System.out.println(LocalDateTime.parse(yyyyMMdd_HHmmss));
7 }
8
9 static void parseDateTimeStringWithFormat(String yyyyMMdd_HHmmss) {
10 System.out.println(LocalDateTime
11 .parse(yyyyMMdd_HHmmss,
12 DateTimeFormatter.ofPattern(DATE_TIME_FORM)));
13 }
14
15 static void parseDateString(String yyyyMMdd) {
16 System.out.println(LocalDate.parse(yyyyMMdd));
17 }
18
19 static void parseTimeString(String HHmmss) {
20 System.out.println(LocalTime.parse(HHmmss));
21 }
22
23 public static void main(String[] args) {
24 parseDateTimeString("2012-06-09T13:12:11");
25 parseDateTimeStringWithFormat("2012-06-09 13:12:11");
26 parseDateString("2012-06-06");
27 parseTimeString("13:12:11");
28 }
29}
以下是API示例:
...处理集合中的null
使用Optional或Stream API来处理集合中的null