SpringBoot

平时多流汗,战时少流血!

SpringBoot 引用外部路径作为静态资源

静态资源访问 我们在开发 Web 应用的时候,需要引用大量的 js、css、图片等静态资源。 默认配置 SpringBoot 默认提供静态资源目录位置需置于 classpath 下(推荐使用默认配置),目录名需符合如下规则: classpath:/META-INF/resources classpath:/resources classpath:/static cl...

SpringBoot-MapStruct自动合并多表查询结果

Mapstruct进行实体与模型之间的自动映射操作

背景 在我们开发的规范中,MySQL 数据库不使用多表查询,也就是 @OneToMany 、 @ManyToMany 这样的注解不会出现在我们的实体中。但在实际的工作中,返回给前端的 Model 数据往往来自多个表的数据拼装。 使用 Mapstruct 来进行实体与 Model 之间自动映射 MapStruct 是一个代码生成器的工具类,简化了不同的 Java Bean 之间映射的处理...

SpringBoot-JPA数据库操作

JPA 常用API CurdRepository 提供了增删改产方法。 PagingAndSortingRepositroy 增加分页查询和排序方法。 JpaRepositroy 增加了实例查询方法。 实际应用中可以有选择的继承上面任何一个接口都可以。 JPA 查询语句关键字 JPA 提供的查询方式可以直接从方法名中派生成查询(需要遵循它的规范),都需要以fin...

SpringBoot-Spring-Data-REST修改默认配置

定制化的操作实现

背景 在上一篇中除去配置类和实体类,写了两行代码,就实现了RESTful风格的接口,但在实际使用时,还需要一些额外的处理,比如在返回的数据中,password这类敏感字段是不应该返回的;删除操作,实际需求不是硬删除只是更新一个删除状态;保存对象操作之前需要做相应的数据校验和数据格式的转换等等,自动转换成REST服务,是否支持自定义功能? 分页+排序查询(这个与以往的习惯有点不同) ht...

SpringBoot-Spring-Data-REST轻松搞定RESTfulAPI

两行代码即可实现实体类的RESTful风格的所有接口

背景 昨天同事问我有没有研究过spring-boot-starter-data-rest,没有~但是看名字就大概知道是做什么的(命名的重要性),因为之前有了解过spring-boot-starter-data-jpa ,过一会发过两个截图过来。真的很强大,感觉这个在使用RESTful风格接口协议的微服务时都不用写Controller了。 什么是Spring Data REST Spri...

SpringBoot集成FastDFS

FastDFS是什么 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能...

实践bug总结-SpringBoot项目中有两个main函数

SpringBoot项目只能存在一个main函数

问题一:异常信息如下 Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) on project springcloud-hystrix-dashboard: Execution default of goal org.spring...

SpringBoot访问MongoDB数据库

MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(da...

SpringBoot-服务端参数验证-JSR-303验证框架

参数的合法性验证是一个必不可少的步骤

作为服务端开发,验证前端传入的参数的合法性是一个必不可少的步骤,但是验证参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可阅读性,所以有没有一个比较优雅的方式来解决这个问题? JSR-303验证框架,JSR-303 是Java EE 6 中的一项子规范,叫做BeanValidation,官方参考实现是Hibernate Validator(与Hibernate ORM 没有关系),J...

Spring Boot Swagger集成

Swagger用于定义API文档

API文档产出方式 传统方式一般使用wiki或者文档,但是每次修改时操作很繁琐,同时调用方也不一定及时了解接口变化情况。 在互联网公司, 前后端分离开发, 后端对外提供接口文档,让别人理解接口是必不可少的。 效率是一方面,能及时的反馈给调用方文档;文档的准确性也是一方面,使用Swagger可以在部署的时候生成在线文档,同时UI也特别漂亮清晰,Swagger让维护接口文档、部署管理...

关系型数据库事务

MySQL MyBatis 事务处理

使用场景 在实际开发中,其实很少会用到事务,一般情况下事务用的比较多的是在金钱计算方面,或购买下单扣库存的过程(过程中一个购买操作包含多个执行过程:查询库存、下单、更新库存,实际操作时,由于高并发存在,可能到下单结束时,更新库存出错,那本次购买操作就是失败的,其下单结果应该被回滚)。如果在一些对一致性要求不高的情况下,可以通过最终一致来解决这个问题。 实现起来很简单 MyBatis与Sp...

Spring Boot 访问MySQL数据库

集成Mybaits访问MySQL数据库

添加依赖 <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1....

Spring Boot 工程结构

规范——项目定义级包结构

Spring Boot项目结构 Spring Boot框架并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们少踩很多坑,尤其是Spring包扫描机制,可以免去不少特殊的配置工作。良好的工程结构划分可以使项目更清晰、明确,减少不必要的冲突,提高代码的统一性。 SpringBoot提供了很多基础设施,在创建生产中的独立程序上非常简便、只需要一些简便的配置就能运行起来。 ...

Spring Boot Web应用

Thymeleaf介绍及使用

Spring Boot开发Web应用 上一篇进行了一个Spring Boot快速入门,完成了一个简单的RESTful服务,本篇介绍Web应用的开发。 静态资源默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static /public /resources /META-INF/resources ...

Spring Boot 快速入门(HelloWorld)

Spring Boot的主要优点 开箱即用,提供各种默认配置 内嵌式容器简化Web项目 没有冗余代码和XML配置的要求 快速入门 目标:完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理 使用Maven构建项目或http://start.spring.io/向导构建项目 略 项目结构 src main java co...