Spring REST实践之Spring Boot
Spring Boot基本描述
可以利用http://start.spring.io网站的进行Spring Boot的初始化构建。这个初始化构建器允许你输入工程基本信息、挑选工程支持的功能,最后会生成一个zip压缩包供你下载。利用http://start.spring.io网站生成的工程模板中,在pom.xml文件中的parent tag表明此工程继承自spring-boot-starter-parent POM,这样能够保证工程继承Spring Boot的默认依赖以及版本。此POM文件中有两个依赖:spring-boot-starter-web和spring-boot-starter-test。Spring使用starter POM描述这样的POM文件。这些starter POM可引入其它的依赖。例如,spring-boot-starter-web可引入Spring MVC依赖、嵌入式Tomcat容器依赖、Jackson处理依赖。这些starter模块在提供必要依赖和简化应用的POM文件方面起到了重要作用。
Spring starter模块
spring-boot-starter:引入核心依赖,比如auto-configuration支持和日志。
spring-boot-starter-aop:引入AOP和Aspectj
spring-boot-starter-test:引入JUnit、Mockito、spring-test等测试依赖
spring-boot-starter-web:引入MVC依赖和嵌入式servlet容器。
spring-boot-starter-jpa:通过引入spring-data-jpa、spring-orm和Hibernate依赖,提供Java Persistence API支持。
spring-boot-starter-data-rest:通过引入spring-data-rest-webmvc以REST API形式公布资源仓库。
spring-boot-starter-hateoas:通过引入spring-hateoas依赖支持HATEOAS REST服务。
spring-boot-starter-jdbc:支持JDBC。
spring-boot-maven-plugin:支持将应用程序打包成JAR/WAR可执行格式,并且运行。
@SpringBootApplication作用
@SpringBootApplication注解是一个简写注解,等同于如下三个注解:
@Configuration:标注一个类包含一个或者多个spring bean声明。Spring框架会处理这些类,并自动创建bean实例。
@ComponentScan:此注解告诉Spring扫描,寻找被@Configuration、@Service、@Repository等注解标注的类。默认情况下,Spring会扫描被@ComponentScan标注的类所在包中的所有类。
@EnableAutoConfiguration:开启auto-configuration功能,Spring Boot会根据类路径发现的依赖和配置关系,猜测、生成bean配置。
main方法中的run方法会指引Spring从工程中读取注解元信息,并以此为基础生成ApplicationContext。
spring boot运行方式
mvn spring-boot:run
CLI
Spring Boot提供了CLI(command line interface)生成工程模板,但是需要安装CLI。
REST工具
Postman
RESTClient
为资源分配URI的最佳实践
1. 为REST服务选用一个base URI
2. 用复数形式命名资源
3. 用URI层次表明资源的相互关系
4. 当遇到没有资源实体可以表示某个实体(比如统计投票结果)时,可使用查询参数。
@ResponseEntity
@RestController同 @Controll和ResponseBody两个注解功能一样。@ResponseEntity可以控制HTTP响应,包括response body和response heasers。
@RequestBody
@RequestBody注解告诉Spring根据Content-Type将request body转换为需要类型的对象。
URI生成器
可通过如下方式生成URI:
URI newPollUri = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(poll.getId())
.toUri();
fromCurrentRequest方法通过从HttpServletRequest复制host、schema、port等信息形成builder。buildAndExpand方法能构建UriComponent实例,并替换URI路径中的占位符。最后调用toUri方法最终形成URI。
Spring REST实践之Spring Boot的更多相关文章
- Spring REST实践之Spring Web MVC
Spring概要 Spring Framework提供了依赖注入模型和面向切面编程,简化了基础型代码的编写工作以及更好的能够与其它框架和技术整合起来.Spring Framework由data acc ...
- 【Spring Cloud】Spring Cloud之整合Spring Cloud Bus以及最佳实践
一.整合步骤 1)加入Maven坐标 <!-- actuator监控模块 --> <dependency> <groupId>org.springframework ...
- Spring+MyBatis实践—MyBatis数据库访问
关于spring整合mybatis的工程配置,已经在Spring+MyBatis实践—工程配置中全部详细列出.在此,记录一下几种通过MyBatis访问数据库的方式. 通过sqlSessionTempl ...
- Spring+MyBatis实践—工程配置
初次实践:Spring+MyBatis技术搭建框架,采用Bootstrap前端开源框架. 简介: MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所 ...
- Spring MVC 实践 - Component
Spring MVC 实践 标签 : Java与Web Converter Spring MVC的数据绑定并非没有任何限制, 有案例表明: Spring在如何正确绑定数据方面是杂乱无章的. 比如: S ...
- Spring MVC 实践 - Base
Spring MVC 实践 标签 : Java与Web Spring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC ...
- spring security 实践 + 源码分析
前言 本文将从示例.原理.应用3个方面介绍 spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 Spring Security 是 ...
- spring cloud: 升级到spring boot 2.x/Finchley.RELEASE遇到的坑
spring boot2.x已经出来好一阵了,而且spring cloud 的最新Release版本Finchley.RELEASE,默认集成的就是spring boot 2.x,这几天将一个旧项目尝 ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
随机推荐
- matlab中矩阵和向量的创建
1.向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=[J,J+1,…,K] a=J:D:K 生成 ...
- 对于fmri的设计矩阵构造的一个很直观的解释-by 西南大学xulei教授
本程序意在解释这样几个问题:完整版代码在本文的最后. 1.实验的设计如何转换成设计矩阵? 2.设计矩阵的每列表示一个刺激条件,如何确定它们? 3.如何根据设计矩阵和每个体素的信号求得该体素对刺激的敏感 ...
- 在python中如何设置当前工作目录
import osos.chdir('要设置的当前目录') >>> import os >>> os.getcwd() 'D:\\Python27' >> ...
- ios iPhone的一些基础知识,扫盲
iPhone 4(2010 年):初始系统: iOS 4.0(GSM 版) (苹果第一次采用 iOS 为移动系统命名),iOS 4.2.2(CDMA 版)可以升级至:iOS 7.1.2 iPhone ...
- 基于HTTP 协议认证介绍与实现
导言 一直对http 的头认证有兴趣,就是路由器的那种弹出对话框输入账号密码怎么实现一直不明白,最近,翻了一下http 协议,发现这是一个RFC 2617的实现,所以写篇文章介绍一下吧. Http基本 ...
- 25个有用的jQuery日历和日期选取插件
jQuery被认为是最好的JavaScript库,因为它简单易用.灵活,并有大量的插件.本文介绍25个非常不错的jQuery日历和日期选取插件,希望对各位有用. 1. Simple JQuery Da ...
- 【PHP入门到精通】:Ch04:流程控制语句
Ch04: 流程控制语句4.1 条件控制语句(1)if (expr) { statement1;statement2;} (2)if (expr) { statement1; } else { s ...
- js的预解析和代码执行相关规则
JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个就是执行阶段. 1.编译阶段:又称为预解析阶段,在这个阶段JavaScript解释器将完成把JavaScript脚本代码转换到字节码. ...
- 说说shell脚本中的export 和 source,bash
小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习. 今天之所以起这个标题,把export,source ,ba ...
- tengine+lua的安装步骤
我是在Red Hat 5.8 的虚机上安装的. Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等.建议把这 ...