LangInteger

Tag: Spring

Spring Web Data Binding and Validation Corner Case

This Stackoverflow Topic
comes up with two questions.

  • Q1: how to distinguish exceptions between
    • data binding when conversion http request body to object
    • customized validation defined as annotation on that object
  • Q2: how to display valuable information when data binding fails

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

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

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中的一些具体的定义产生混淆,在此记录。
1