0%

springboot 与数据验证

一. 简述

在项目开发中,验证参数也是最经常使用的业务需求了。通常在开发的时候都需要根据业务需求,对参数进行必要验证。 当然一堆的 if-else 的验证在日常开发中时常可见。这种方式非常不友好: 1. 代码太长导致阅读不友好,更改需求可能只是简单的修改但是却需要阅读几十到几百行的代码 2. 有时候业务只是一两句但是验证代码却占用了很长时间 JSR-303Java 的验证规范,早期是在 Hibernate 框架中实现的,后面被抽取到 Java 体系。Spring-Boot 使用了 hibernate-validator 验证器,所以也包含了 JSR-303 在里面。当需要进行参数验证的时候,只需要几个注解即可实现复杂的验证。
GitHub:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-validate

二. 开发

1. 引入依赖

1
2
3
4
5
<!-- 引入 web-starter, 已经包含 hibernate-validator 验证器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
阅读全文 »

springboot 与数据接口

一. 简述

从以往的 Spring 项目开发经验来看,SpringJSON 情有独钟,这也得益于 JSONJS 发明的一种轻量级的数据交换格式,因为本身 JS 是弱类型的语言,所以 JSON 便没有什么特定类型限制,使得其他各门语言都可以对 JSON 进行解析,从而序列化成各自的对象。 其实前面说的已经有一点半点的,基本都是返回 JSON 字符串,所以这里便加深一点,涉及 SpringMVC 可以用于开发的注解。
GitHub:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-restful

二. 开发

1. maven 依赖

maven 依赖依然只需要 spring-boot-starter-web 的依赖即可

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
阅读全文 »

springboot-web 拦截器的使用

一. 简述

用过 SpringMVC 的应该都知道拦截器,拦截器可以设置在 SpringMVC 接收请求之前处理(返回 true 继续执行或 false 拒绝执行),方法处理请求之后,以及处理完整个请求之后的操作。例如:单体项目的登陆拦截、在进入处理器之前先给线程栈设置一个公用的 UserThreadLocal 等等。
GitHub地址:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-interceptor

二. 开发

1. mvn 新增 web-starter 的依赖

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

拦截器依然默认是存在 web-starter 里面的。

阅读全文 »

springboot-web 常用异常信息返回

一. 简述

在日常的开发中,都会有多多少少的异常发生,如:不存在异常、参数异常等等。那这时候怎么向前端展示也是一个问题,通常的做法就是建立一个通用的数据返回类注入 ResultDto 然后存储是否顺利调用,数据,错误信息等信息。结合 spring-boot-web 的监听器,可以让我们尽量少的关注这些错误异常的发生,只要一句话或者一个注解【需要自己封装,使用 aop 】,就可以实现程序给我们的自动验证。 GitHub: https://github.com/WeidanLi/spring-boot-tutorial 示例代码:web-exception-resp

二. 开发

1. mvn 新增 web-starter 的依赖

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
阅读全文 »

一个简单的入门 web 项目

[toc]

一. 简述

其实,spring 在我们职业生涯中,大部分只做一件事情,那就是:web 项目 bean 的管理和整合。所以,web 应用是至关重要的,本文将从一个简单的 hello world 开始 web 的构建。 示例代码:web-simple

阅读全文 »

什么是 spring-boot

[toc]

一. 简述

用了一年多的 spring-boot 进行项目开发了,我想我有必要把平时开发遇到的,我自己个人在项目中要求 spring-boot 做到的整理成一份主题博客。一来整理一下用了 spring-boot 这么久以来的收获,二来也好给自己有个知识的重新整理和归纳。

阅读全文 »

一. 简述

在项目开发的时候,特别是使用 TDD 进行开发的项目,测试便是不可或缺的一个环节。然而我们的服务一般都需要配合其他服务接口来进行开发,那么测试的时候就需要开启所有服务来配合测试,机器配置跟不上,在构建的时候也会出现很多问题。 这时候就需要有一个东西来把调用第三方接口的事情给做了。最近看了Clossoverjie的一篇文章 分享几个 SpringBoot 实用的小技巧,他很巧妙的利用 Spring 的容器把连接第三方接口的 bean 给替换掉。但我感觉始终还不是那么优雅(嗯,Spring 脑残粉,Spring 提供了就会用)。 现在 Spring-Cloud 提供了一个插件,Spring-Cloud-Contract 可以巧妙的对消费者项目进行打桩,让项目的测试调用访问的时候,可以模拟第三方业务,这也需要生产者提供一个 Contract 来使用。(当然,挺适合我这种一个人开发多个服务的开发者)

阅读全文 »

因为已经编写了 web 项目,此项目直接在 web 项目上新增数据库访问。此处使用的访问 orm 层是 spring 官方提供的 spring-data-jpaspring-data-jpa 是官方通过使用 java 规范中的 jpa 标准,使用 hibernate 框架作为 orm 层进行的数据库层面的请求访问。众所周知, hibernate 框架是针对数据库层面的面向对象框架,编写一次兼容所有数据库,不过前提是都使用他提供的 hql 或者接口进行编写。 spring 还对其新增了对领域驱动设计的友好支持。

一. 在项目中引入依赖

  1. 引入 spring-boot-starter-data-jpa 框架,便已经让项目支持了数据库连接
  2. 数据库驱动
  3. 如若需要测试环境,再引入内存数据库以及测试驱动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 测试支持,可以使用内存数据库 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
阅读全文 »

spring-bootweb 开发项目

[toc]

一. 导入 spring-boot 父类依赖

通常来说,使用 官方脚手架 生成的 spring-boot 的父类依赖都是 spring 官方提供的 parent 然而,在实际生产中,这种方法,很少使用。我们更多的时候依赖自己项目中的父类进行生成。所以我们需要在自己的 pom.xml 中导入 spring 官方提供的 parent 即使现在 2.0.0 版本已经出来了,新增了 reactor 功能,但是如果不使用这套功能的话,我依然推荐 1.5.10.RELEASE 版。

1
2
3
4
5
6
7
8
9
10
11
12
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.10.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
阅读全文 »

一、介绍

在计算机中,CPU只能识别二进制,当需要CPU做事情的时候,都需要通过二进制去指挥CPU做什么事情。古人觉得二进制实在是难以理解,所以才发明了汇编语言以及后面的高级语言,所以汇编语言可以称作为比较接近机器语言的语言了。 当然后面的古人依然觉得汇编语言难以理解,所以发明了C、C++、Java来解决难以理解的问题。所以后面的语言越来越偏于人类自然语言,并且使用面向对象的思想来设计程序。当然这期间经历的事情还挺多:C编译成汇编语言,汇编语言再翻译成二进制语言,这个过程即称为assembling。 学习汇编语言既需要下面两个概念的理解:内存模型寄存器

阅读全文 »