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学习都 ...
随机推荐
- ecshop 设置管理员
<?php define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $admin_name=trim ...
- Oracle 11gR2用gpnp profile存放ASM的spfile路径
从Oracle 11gR2开始,GI集成了ASM,OCR/VOTEDISK也存放在ASM磁盘组了(11gR2以前需要存放于裸设备中),同时ASM的功能较10g也有很大增强. 我们先引入一个问题:11g ...
- 查看MySQL的警告信息
在王MySQL数据库导入数据的时候经常会出现警告,这些警告很容易被忽视,今天到数据的时候突然想看看警告的内容是什么,百度了一下mysql查看警告的命令 show warnings; 命令很简明,一查看 ...
- 【转】Linux下创建、销毁、使用 SWAP
转自:http://blog.csdn.net/wxqee/article/details/7970110 创建swap文件方法 1) 创建一个足够大的文件 dd if=/dev/zero of=/l ...
- 二级指针的作用及用途 .xml
pre{ line-height:1; color:#9f1d66; background-color:#e1e1e1; font-size:16px;}.sysFunc{color:#5d57ff; ...
- STL六大组件之——迭代器这个东西
迭代器:除了在其它语言中司空见惯的下标法访问容器元素之外,C++语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.换个方式来说,容器就是 ...
- JavaScript操作DOM的那些坑
js在操作DOM中存在着许多跨浏览器方面的坑,本文花了我将近一周的时间整理,我将根据实例整理那些大大小小的“坑”. DOM的工作模式是:先加载文档的静态内容.再以动态方式对它们进行刷新,动态刷新不影响 ...
- MVC弹出子页面向父页面传值
实现思路是使用js在父子页面间传值 视图一代码,父页面 @{ ViewBag.Title = "Index"; } <script type="text/javas ...
- servicestack操作redis
tatic void Main(string[] args) { );//redis服务IP和端口 #region =insert= var storeMembers = new List<st ...
- WebSocket with Flask
转自:https://blog.shonenada.com/post/websocket-with-flask/ WebSocket with Flask HTML5 以前,HTML 还不支持 Web ...