本篇学习目标

  • Spring Boot是什么?
  • 构建Spring Boot应用程序
  • 三分钟开发SpringBoot应用程序 本章源码下载

Spring Boot是什么?

spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

  • Spring的目标是致力于全方位简化Java开发
  • SpringBoot是简化Spring开发

我们来探讨一下一个标准的Spring程序我们需要该做什么?

  • 标准项目结构,以及必要的依赖
  • web.xml文件(或一个WebAPplicationInitializer实现)
  • Spring的相关配置
  • Controller控制器
  • WEB应用服务器(Tomcat)

我们可以发现只有一个Controller是和我们的业务相关的,其他的都是Spring开发Web应用程序的通用模板,而SpringBoot就能让你只写控制器即可,剩下的全都交给SpringBoot即可,下面我们一起来看一下SpringBoot是如何简化Spring开发的

SpringBoot如何简化Spring开发的?

  • 起步依赖 : 告诉SpringBoot需要什么功能,它就能引入相关依赖
  • 自动配置 : 针对Spring常见功能自动提供相关配置
  • 命令行界面 : 编写部分代码就可以运行程序
  • Actuator : 能让你深入到运行中的SpringBoot一探究竟

构建SpringBoot应用程序

构建SpringBoot项目,有很多种方法,例如下面所示,你可以使用任何一种方法构建SpringBoot项目

下面是使用web界面构建SpringBoot项目示例图,另外几种方式不再一一累述

三分钟开发SpringBoot应用程序

现在我们要花上三分钟创建一个小的应用程序,是一个类似待办事项的小应用,从这个应用程序中,我们就能感受到SpringBoot的起步依赖和自动配置的强大魅力 本章源码下载

  1. 创建一个BOOK(实体类)
  2. 创建一个Repository(仓库接口)
  3. 创建一个Controller(控制器)

Book实体

@Entity
public class Book { @Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String reader;
private String isbn;
private String title;
private String author;
private String description; getter and setter .....
}

仓库接口

@Repository
public interface ReadingListRepository extends JpaRepository<Book, Long> { List<Book> findByReader(String reader); }

控制器

@Controller
@RequestMapping("/readingList")
public class ReadingListController { private static final String reader = "jimisun"; @Autowired
private ReadingListRepository readingListRepository; @RequestMapping(method = RequestMethod.GET)
public String readersBooks(Model model) { List<Book> readingList = readingListRepository.findByReader(reader);
if (readingList != null) {
model.addAttribute("books", readingList);
}
return "readingList";
} @RequestMapping(method = RequestMethod.POST)
public String addToReadingList(Book book) {
book.setReader(reader);
readingListRepository.save(book);
return "redirect:/readingList";
} }

前端html

......

启动SpringBoot项目,访问 http://localhost:8080/readingList

刚才发生了什么?

我们不是要进行配置一些类的配置吗?NO NO NO,使用SpringBoot让配置成为了过去,SpringBoot的自动配置(利用Spring的条件化配置)担任起了配置Spring的重任

  • 因为ClassPath里有H2,所以会创建一个H2数据库的Bean,JPA实现需要它访问数据库
  • 因为ClassPath里有Hibernate(Spring Data JPA传递引入的)实体管理器,所以自动配置会配置与Hibernate有关的Bean
  • 因为ClassPath里有Spring Data JPA,所以会根据仓库的接口创建仓库的实现
  • 因为ClassPath里有Spring MVC(Web的起步依赖引入的),所以会配置Spring的DispatcherServlet并启用Spring MVC
  • 因为ClassPath里有Tomcat(Web起步依赖引入的),所以会启动一个嵌入式的Tomcat容器,监听8080端口
  • ......

我们可以看到,得益于SpringBoot的起步依赖和自动配置,我们几乎不用做任何配置,但是在某些场景下自动配置可能并不如意,或者你需要另外一种配置,该怎么办? Java工程师之SpringBoot系列教程将为您详细揭晓SpringBoot神秘面纱

该教程所属Java工程师之SpringBoot系列教程,本系列相关博文目录 Java工程师之SpringBoot系列教程前言&目录

SpringBoot系列教程起步的更多相关文章

  1. Java工程师之SpringBoot系列教程前言&目录

    前言 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代步遍布的时候,你就行该想到我能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代.但 ...

  2. springBoot系列教程07:异常捕获

    发生异常是很正常的事,异常种类也是千奇百怪,发生异常并不可怕,只要正确的处理,并正确的返回错误信息并无大碍,如果不进行捕获或者处理,分分钟服务器宕机是很正常的事 所以处理异常时,最基本的要求就是发生异 ...

  3. SpringBoot系列教程web篇之过滤器Filter使用指南

    web三大组件之一Filter,可以说是很多小伙伴学习java web时最早接触的知识点了,然而学得早不代表就用得多.基本上,如果不是让你从0到1写一个web应用(或者说即便从0到1写一个web应用) ...

  4. SpringBoot系列教程web篇之自定义异常处理HandlerExceptionResolver

    关于Web应用的全局异常处理,上一篇介绍了ControllerAdvice结合@ExceptionHandler的方式来实现web应用的全局异常管理: 本篇博文则带来另外一种并不常见的使用方式,通过实 ...

  5. SpringBoot系列教程web篇之全局异常处理

    当我们的后端应用出现异常时,通常会将异常状况包装之后再返回给调用方或者前端,在实际的项目中,不可能对每一个地方都做好异常处理,再优雅的代码也可能抛出异常,那么在 Spring 项目中,可以怎样优雅的处 ...

  6. SpringBoot系列教程web篇之404、500异常页面配置

    接着前面几篇web处理请求的博文,本文将说明,当出现异常的场景下,如404请求url不存在,,403无权,500服务器异常时,我们可以如何处理 原文友链: SpringBoot系列教程web篇之404 ...

  7. SpringBoot系列教程web篇之重定向

    原文地址: SpringBoot系列教程web篇之重定向 前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -&g ...

  8. SpringBoot系列教程JPA之新增记录使用姿势

    SpringBoot系列教程JPA之新增记录使用姿势 上一篇文章介绍了如何快速的搭建一个JPA的项目环境,并给出了一个简单的演示demo,接下来我们开始业务教程,也就是我们常说的CURD,接下来进入第 ...

  9. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

随机推荐

  1. 关于B/S和C/S模式

    B/S注重的是 1.服务想玩游戏的时候,就出现想看电影的时候,就出现不用下载客户端太麻烦看个电影还要下载一大堆东西,不看了 2.维护升级软件不用一台一台地重新更新,百度一直在更新,但是我们感觉不到 3 ...

  2. C++ Primer学习笔记(一)

    始终对C++念念不忘,看过 一个32岁入门的70后程序员给我的启示  之后,心情激荡,更是一发不可收拾. 认真地说,我不是一个执着的人,见异思迁,好读书而不求甚解,兼之情绪化(~~ 某些方面),于是怒 ...

  3. 第三百一十五节,Django框架,CSRF跨站请求伪造

    第三百一十五节,Django框架,CSRF跨站请求伪造  全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...

  4. MySQL 插入数据时,中文乱码问题的解决

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  5. 电视不支持AirPlay镜像怎么办?苹果iPhone手机投屏三种方法

    导读:苹果手机多屏互动功能在哪里?iPhone苹果手机没有AirPlay镜像怎么办?三种方法教你苹果iPhone手机怎么投影到智能电视上. 前言: 苹果iPhone手机投屏到电视设备上,需要使用到Ai ...

  6. php获取QQ头像并显示的方法

    鉴于此,我在想一个大众化的,比较简单的方法,我想到的是对于没有头像的朋友调用其QQ头像, 因为QQ现在至少是人手一个,所以只需要留言时填写QQ号,然后调用其头像,这样一来就方便多了. 首先是获取QQ的 ...

  7. VS2008 Output窗口自动滚动

    Output窗口默认是自动滚动的,活动光标始终处于最后一行. 但是有时候因为某些操作可能导致Output窗口的自动滚动停止. 如何恢复自动滚动呢? 使用快捷键操作即可:Ctrl + End

  8. 各大门户网站全局CSS样式定义

    1.网易 body { text-align: center; font-family:"宋体", arial;margin:0; padding:0; background: # ...

  9. C#读取Excel日期时间

    //如果为20171219 if (dt.Rows[i][title].ToString().Trim().Length == 8) { realDate = dt.Rows[i][title].To ...

  10. iOS-WKWebView使用

    使用代码:可直接粘贴到自己项目中使用 .h #import "BaseViewController.h" @interface LinkNewsController : BaseV ...