SpringBoot

什么是SpringBoot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。

SpringBoot的特点

  • List item

在以前我们使用Spring搭建项目时需要写大量的xml代码来配置Spring,这些代码与业务无关,编写配置挤占了编写应用程序业务的时间,依赖的管控也是一件令人头大的事,一旦选错了依赖的版本,随之带来版本的不兼容问题。
复杂的配置+依赖的冲突 造成了Spring的不方便之处,这时SpringBoot就出现了。

这是官网关于SpringBoot的介绍

简单翻译一下就是

  • 创建独立的Spring应用程序
  • 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
  • 提供自定义的“入门”依赖项,以简化构建配置
  • 尽可能自动配置Spring和第三方类库
  • 提供生产就绪的功能,例如指标,运行状况检查和外部配置
  • 完全没有代码生成,也不需要XML配置

关于SpringBoot有两大特点

  1. 自动配置
  2. 起步依赖

什么是自动配置

简单点说:SpringBoot对常用的Spring的依赖进行再一次封装,方便我们引入。
当我们要导入web相关的依赖时我们要导入Spring-web和Spring-mvc的依赖,但当我们使用了SpringBoot后,就只需导入起步依赖的包即可。

 <!--SpringBoot Web配置--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.7.RELEASE</version></dependency>

当我们点进去查看源码时,发现SpringBoot帮我们封装了web环境下所需的一切依赖,也就是说,当我们导入SpringBoot的web起步依赖时,Spring默认帮我们添加了web环境下的所需依赖,我们不用再去担心依赖之间的冲突问题。

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starters</artifactId><version>2.1.4.RELEASE</version></parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.4.RELEASE</version><name>Spring Boot Web Starter</name><description>Starter for building web, including RESTful, applications using SpringMVC. Uses Tomcat as the default embedded container</description><url>https://projects.spring.io/spring-boot/#/spring-boot-parent/spring-boot-starters/spring-boot-starter-web</url><organization><name>Pivotal Software, Inc.</name><url>https://spring.io</url></organization><licenses><license><name>Apache License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><developers><developer><name>Pivotal</name><email>info@pivotal.io</email><organization>Pivotal Software, Inc.</organization><organizationUrl>https://www.spring.io</organizationUrl></developer></developers><scm><connection>scm:git:git://github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</connection><developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-boot.git/spring-boot-starters/spring-boot-starter-web</developerConnection><url>https://github.com/spring-projects/spring-boot/spring-boot-starters/spring-boot-starter-web</url></scm><issueManagement><system>Github</system><url>https://github.com/spring-projects/spring-boot/issues</url></issueManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.1.4.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.16.Final</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.6.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.6.RELEASE</version><scope>compile</scope></dependency></dependencies>

什么是自动配置

在我们使用Spring必须配置相关的xml文件 (web.xml,SpringMVC.xml)。这样繁琐的配置降低了我们开发的效率和时间。
当我们用上Spring Boot时的自动配置,Spring会帮助你完成配置文件的导入,配置应该用哪个,不该用哪个,该过程是Spring决定的。

先来入门再来分析

Spring入门案例

idea支持Spring的快速入门,当使用idea的快速入门时Spring会帮助你自动创建环境(需要手动选择需要的环境和依赖)

快速入门


这里使用快速入门也可以,创建Maven项目手动导依赖也可以达到同样效果

创建Maven项目

需要在项目中导入父依赖
父依赖中指定了依赖的版本(即在后面的Spring起步依赖中都不用指定版本)

<!-- SpringBoot的父依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version></parent>

导入web相关依赖

  <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

启动类值得注意的:启动类存放的位置必须是比所有文件大上一级,否则报错

@SpringBootApplication
public class HelloSpringBootApplication {public static void main(String[] args) {SpringApplication.run(HelloSpringBootApplication.class,args);}
}

controller

运行启动类即可运行项目

测试

说明

在Spring的官方文档中

简单翻译下:
尽管可以将该服务打包为传统的WAR文件以部署到外部应用程序服务器,但是下面演示的更简单的方法创建了一个独立的应用程序。 您将所有内容打包在一个可执行的JAR文件中,该文件由一个很好的旧Java main()方法驱动。 在此过程中,您将使用Spring的支持将Tomcat servlet容器作为HTTP运行时嵌入,而不是部署到外部实例

这就是刚才的启动类了(启动类上的 SpringBootApplication注解 启动了SpringBoot内嵌的服务器(即Tomcat))

那SpringBootApplication注解又是如何工作的呢?官方文档中也有进行了说明。

@SpringBootApplication是一个方便的注释,它添加了以下所有内容:
@Configuration:将类标记为应用程序上下文的bean定义源@EnableAutoConfiguration:告诉Spring Boot根据类路径设置、其他bean和各种属性设置开始添加bean。例如,如果spring-webmvc位于类路径上,则该注释将应用程序标记为web应用程序并激活关键行为,例如设置DispatcherServlet。
**@ComponentScan:**告诉Spring在hello packag中查找其他组件、配置和服务

下面Spring也给出了这个方法的方便之处

main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。您注意到没有一行XML吗?也没有web.xml文件。这个web应用程序是100%纯Java的,您不必配置任何管道或基础设施。

在关于Controller上的**@RestController注解**,Spring也给出了声明



这段代码使用了Spring 4新的@RestController注释,它将类标记为一个控制器,其中每个方法返回一个域对象而不是一个视图。它是@Controller和@ResponseBody的缩写


上面的示例没有指定GET与PUT、POST等,因为@RequestMapping默认映射所有HTTP操作。使用@RequestMapping(method=GET)来缩小这个映射。

具体源码解析看这里
推荐阅读
SpringBoot的源码解析
SpringBoot源码分析—启动过程

SpringBoot的配置

当我们想要在项目中配置我们想要的配置时,我们该怎么做呢?
Spring在配置时利用了application.properties 文件定义了配置,我们只需重写即可

我们可以在resources目录下创建application.properties文件或application.yml
来重写Spring的相关配置
值得注意的是:如果properties和yml配置文件同时存在在spring Boot项目中;那么这两类配置文件都有效。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主

当创建了配置文件后,我们就可以对项目的配置做修改了

#sqlspring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///demousername: rootpassword: rootapplication:name: shelock
#mybatismybatis:mapper-locations: # 映射文件的位置- classpath:/mapper/*Mapper.xmltype-aliases-package: com.shelock.pojoconfiguration:map-underscore-to-camel-case: true# tomcat端口号
server:port: 8080

tomcat(默认为8080)

jdbc

mybatis

推荐阅读
Spring Boot干货系列

最后

关于SpringBoot就大概讲这么多,有空再更(或者说有人看??)
如果文章有错的地方欢迎指正。
个人博客: juhaozero的博客

Spring入门——SpringBoot(春季靴???)相关推荐

  1. 从零开始写类似Spring和SpringBoot的框架

    Toy-Spring 简介 快速链接 源码下载 https://gitee.com/fencer911/toy-spring 1. ToySpring是一款轻量级 类SpringBoot框架,模仿sp ...

  2. Spring——入门介绍(以版本5.2为例)

    目录 1.Spring框架概述 2.Spring入门案例 3.IoC介绍 (1)IoC概述 (2)IoC底层原理 (3)IoC接口 4.IoC操作--Bean 管理 (1)Bean 管理概述 (2)B ...

  3. Spring 和 SpringBoot 最核心的 3 大区别,详解!

    作者:乐傻驴 uee.me/cNDC8 概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累.我慢 ...

  4. IDEA下——Spring入门程序

    创建一个Maven的项目,我的项目结构如下: 在pom文件里写下需要导入的依赖: <?xml version="1.0" encoding="UTF-8" ...

  5. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  6. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  7. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  8. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  9. Spring入门介绍:

    Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...

最新文章

  1. ladar:16线激光雷达(雷神)
  2. 发新款电池!成本降低14%,特斯拉会继续降价吗?
  3. Python的Requests库官方文档
  4. mysql是哪五个字符集_MySQL中涉及的几个字符集
  5. 20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结
  6. 玛丽莲·梦露从未公开的照片
  7. 表单PostGet两个长度限制问题的分析
  8. Code Review
  9. 用JSLint+Ant检验HTML代码
  10. Customizing AxWebBrowser, make it powerful
  11. 黑马程序员___Java基础[09-IO]
  12. VS2015sql本地服务器为空,详解VS2015自带LocalDB数据库用法实例
  13. java api 8 中文_java8 JDK1.8 API 中文 翻译版 java帮助文档
  14. android 锁屏显示消息格式,通知!在锁屏上显示Android通知 | MOS86
  15. 计算机Excel电子表格处理文件,2018计算机应用基础-Excel电子表格题目
  16. 关于SRE方法论的一些笔记
  17. 日本麻将中的牌型名称,充满格调与文艺
  18. 实验吧-杯酒人生(凯撒解密,维基利亚密码)
  19. android profile 打包_Android 利用 Managed Profile 确保兼容性
  20. 有没有Type-C接口的无线投屏器?HDMI、USB、Type-C接口的无线投屏器又有什么区别呢?

热门文章

  1. [转]明朝出了个张居正 作者:秋风浩荡 -2
  2. 微信小程序登录密码MD5加密
  3. Fastreport.Net用户手册(七):Bands
  4. Boxes Packing
  5. 《Linux命令行与Shell脚本编程大全》读后感
  6. 【python】带你采集房源数据并作房价分析
  7. 毕业设计 手写数字识别算法研究与实现(源码+论文)
  8. Android 百度地图 行动轨迹用彩色线画出实现方法
  9. Spring Security OAuth2 实现登录互踢
  10. Chrome扩展学习Demo(三):将浏览器地址栏的网址转换为二维码