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的更多相关文章

  1. Spring REST实践之Spring Web MVC

    Spring概要 Spring Framework提供了依赖注入模型和面向切面编程,简化了基础型代码的编写工作以及更好的能够与其它框架和技术整合起来.Spring Framework由data acc ...

  2. 【Spring Cloud】Spring Cloud之整合Spring Cloud Bus以及最佳实践

    一.整合步骤 1)加入Maven坐标 <!-- actuator监控模块 --> <dependency> <groupId>org.springframework ...

  3. Spring+MyBatis实践—MyBatis数据库访问

    关于spring整合mybatis的工程配置,已经在Spring+MyBatis实践—工程配置中全部详细列出.在此,记录一下几种通过MyBatis访问数据库的方式. 通过sqlSessionTempl ...

  4. Spring+MyBatis实践—工程配置

    初次实践:Spring+MyBatis技术搭建框架,采用Bootstrap前端开源框架. 简介: MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所 ...

  5. Spring MVC 实践 - Component

    Spring MVC 实践 标签 : Java与Web Converter Spring MVC的数据绑定并非没有任何限制, 有案例表明: Spring在如何正确绑定数据方面是杂乱无章的. 比如: S ...

  6. Spring MVC 实践 - Base

    Spring MVC 实践 标签 : Java与Web Spring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC ...

  7. spring security 实践 + 源码分析

    前言 本文将从示例.原理.应用3个方面介绍 spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 Spring Security 是 ...

  8. spring cloud: 升级到spring boot 2.x/Finchley.RELEASE遇到的坑

    spring boot2.x已经出来好一阵了,而且spring cloud 的最新Release版本Finchley.RELEASE,默认集成的就是spring boot 2.x,这几天将一个旧项目尝 ...

  9. Spring Cloud学习笔记--Spring Boot初次搭建

    1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...

随机推荐

  1. Eclipse 打开编辑文件所在文件夹方法

    一个便捷的方法在eclipse的菜单中,依次点击Run->External Tools-> External Tools configurations添加一个新的工具 OpenContai ...

  2. 五:分布式事务一致性协议paxos的应用场景

    1.应用场景 (1)分布式中的一致性 Paxos算法主要是解决一致性问题,关于“一致性”,在不同的场景有不同的解释: NoSQL领域:一致性更强调“能读到新写入的”,就是读写一致性数据库领域:一致性强 ...

  3. 线程----BlockingQueue (转)

    t java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.ut ...

  4. unity, setting standard shader by script

    http://forum.unity3d.com/threads/change-standard-shader-render-mode-in-runtime.318815/

  5. NoSQL架构实践(一)——以NoSQL为辅

    前面<为什么要使用NoSQL>和<关系数据库还是NoSQL数据库>两篇从大体上介绍了为什么要用NoSQL,何时该用NoSQL.经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好 ...

  6. AndroidSdk离线下载

    http://dl.vmall.com/c00x42abt3# 关键字:android sdk 离线

  7. IClassSchemaEdit修改要素类信息

    private void ChangeFeatureClassAliasName(IFeatureClass pFeatureClass, string aliasName) { ISchemaLoc ...

  8. maven(一)初步搭建,项目结构

    一.环境准备 java环境, jdk 1.5 以上 MyEclipse集成工具,我装的是8.5 版本 二.快速安装及配置 1.下载maven: http://maven.apache.org/docs ...

  9. jQuery选择器之全面总结

    选择器是jQuery的根基,在jQuery中,对事件处理,遍历DOM和Ajax操作都依赖于选择器.如果能熟练的使用选择器,不仅能简化代码,而且可以达到事半功倍的效果. jQuery中的选择器完全继承了 ...

  10. OPENGL学习笔记整理(五):着色语言

    有些事情本身就是十分奇怪的.在传统上,图形硬件的设计目的是用于快速执行相同的硬编译指令集.不同的计算步骤可以被跳过,参数可以被调整,但计算本身确实固定不变的.然而,随着技术的发展,却越来越变得可以编程 ...