LangInteger

Home

Java Bean Validation 及其在 Spring Boot 参数校验中的应用

  • 1 ConstraintViolationException 和 MethodArgumentNotValidException 在参数校验中有何区别?
  • 2 @Valid 和 @Validated 有什么区别?
  • 3 为什么在 Spring Boot 项目中, 各个方法中的 @Valid 注解对 query 参数和 list object 旁边的参数校验注解熟视无睹?
  • 4 为什么在第 3 条的基础上,只要在 Controller 上打上 @Validated 注解,注解中表明的约束又能焕发新生,起到相应的作用?

Building Web Server With Akka HTTP

Philosophy of Akka HTTP quoted from their documentations:

The Akka HTTP modules implement a full server and clientside HTTP stack on top of akka-actor and akka-stream. It’s not a web-framework but rather a more general toolkit for providing and consuming HTTP-based services. While interaction with a browser is of course also in scope it is not the primary focus of Akka HTTP.

Akka HTTP was designed specifically as “not-a-framework”, not because we don’t like frameworks, but for use cases where a framework is not the right choice. Akka HTTP is made for building integration layers based on HTTP and as such tries to “stay on the sidelines”. Therefore you normally don’t build your application “on top of” Akka HTTP, but you build your application on top of whatever makes sense and use Akka HTTP merely for the HTTP integration needs.

centralized-configuration

Spring Cloud 配置中心使用及各配置优先级。

OOP 之殇 —— 从一次事故说起

不久前,在编码系统某业务模块完毕,感觉万事大吉可以放飞自我的时候,测试出一个莫名其妙的 BUG。

Spring-to-tell 之基于 XML 配置文件的启动流程

Bean 的管理是 Sping 框架中的核心内容。在 Spring 中,Bean 被抽象为 BeanDefinition 这种数据结构,其定义完整描述了我们在配置文件中定义的 \ 节点中的所有信息,包括各种属性、各种类型的子节点。Spring 对 Bean 的管理就是围绕 BeanDefination 来展开的。根据 Bean 来源的不同,Spring 的启动围绕各种定义了 Bean 的资源文件、注解去展开。本文从最基础的形式开始,主要讲述基于 XML 配置文件的 Spring IOC 容器的启动流程。

Lambda 表达式

讲讲 java 中 Lambda 表达式的那些故事。

Spring Data JPA 简明教程

JPA 是为了整合第三方 ORM 框架建立的一套标准接口,统一了数据持久化存储的相关操作。程序员只需学习一套统一的 JPA api,而不必关心底层去做事情的 ORM 框架到底是谁。
Hibernate 等 ORM 框架是 JPA 的底层实现,本身提供了一些 CRUD 功能,但是包含业务逻辑的数据库访问操作仍然需要手写 sql 语句来实现,而 Spring-data-jpa 则提供了进行了更强大的功能,封装了一定的业务逻辑功能,最大程度上减少了手写 sql。

Spring @Transactional两三事

事务是指访问并可能更新数据库中各种数据项的一系列操作,这些操作要么全部成功,要么全部失败。如果说一个数据库支持事务,那么该数据库必须要具备ACID四个特性。亦即:

  • 原子性(Atomicity):事务包含的操作要么全部成功,要么全部失败
  • 一致性(Consistency):事务操作使数据库从一个一致性状态变换到另一个一致性状态
  • 隔离性(Isolation):多个用户并发访问数据库时,每个并发事务之间会互相隔离,不会互相干扰。
  • 持久性(Durability):事务操作对数据库中数据的改变是永久性的。
    由此又引出事务的隔离级别、不同隔离级别会产生的不同毛病等问题。
    在Spring中使用这些概念的时候,可能会和Spring中的一些具体的定义产生混淆,在此记录。