Spring Boot介绍

Spring Boot简介

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

从上面两段介绍,对Spring Boot应该有一个初步的认识了:

  1. 源自于Spring4.0框架
  2. 简化了Spring应用开发
  3. 集成了大量的框架

这就是我们对Spring Boot的初步认识,我们在通过与Spring框架的对比,来弄清楚Spring框架已经很优秀了,为什么还需要Spring Boot?

Spring Boot与Spring

Spring

我们学习完JavaSE之后我们就步入了学习JavaEE的过程,我们首先学的就是JavaWeb(Tomcat和Servlet),后面就开始学习Spring,我相信在学习Spring的时候,大家看的第一张图应该就是那张将Spring所有主要模块罗列的图了。而Spring框架其实包含了很多的功能模块,并且我们可以根据项目需求使用其中某些模块。

拿Spring MVC框架举例,在我们使用Spring MVC框架进行开发时我们会发现比导入jar包更多的是构建Spring MVC项目时我们需要配置的文件——application.xml,springmvc-config.xml,log4j.properties,db.properties...,这一大堆的配置文件还是项目不是很大的情况下,如果项目够大,为了规范代码,配置文件肯定更多更繁杂,最关键的是,其中大部分代码在多个web项目中配置内容大多相同,不同的只是参数,即使是是用了Spring提供的Java注解,配置文件写起来也还是麻烦,这个时候要是可以帮我们自动写配置文件就好了,我们只需要表明关键的配置参数,一个web项目就生成了,这样岂不是不用浪费时间在写配置文件和书写依赖关系上了?所以Spring Boot出现了

Spring Boot

Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。有点类似于maven,maven集成了全部jar,而Spring Boot集成了绝大部分框架。

当然不是说Spring Boot不需要配置,Spring Boot需要的配置文件类似于Maven的POM,maven就POM一个配置文件,而Spring Boot也就一个配置文件足以,并且配置规则不难,大部分配置已经默认好了。关键是Spring Boot还帮助我们进行了依赖之间的管理和依赖的版本控制。降低了依赖之间的冲突。

以下是Spring Boot中的一些特点:

  1. 创建独立的spring应用(Spring不再是配角)。
  2. 嵌入Tomcat, Jetty Undertow 而且不需要部署他们。
  3. 提供的“starters” poms来简化Maven配置(一站式管理依赖)
  4. 尽可能自动配置spring应用。
  5. 提供生产指标,健壮检查和外部化配置
  6. 绝对没有代码生成和XML配置要求

区别

相信介绍之后两者区别很明显了:

  • 项目搭建和开发过程Spring Boot要优于大部分Spring应用开发,并且简化了Spring应用。并不需要配置大量的配置文件,也不需要繁杂的开发步骤,Spring Boot继承了Spring的优点并在其扩展了自己的特点(就是包含大量框架)。
  • 解决了项目中依赖之间的不稳定性,依赖冲突的问题。Spring Boot帮我们一站式管理了依赖,而Spring要在maven中显示声明大部分依赖。
  • Spring Boot内部嵌入了服务端,而且不需要部署,Spring 需要我们手动配置和部署(即使用了idea)

当然两者区别肯定是不只上诉三点的,这只是两者最直观,初学最开始感受到的区别。

Spring Boot的初步使用

使用Spring Boot搭建一个简单的Spring MVC 项目:

我们先用maven创建一个普通的java项目,项目结构如图:

至于为什么这个普通的Java项目是web项目,学到后面就详细了解了,我们先用Spring Boot跑起来。

下一步就是使用maven导入Spring Boot的依赖,这里我们这里就采用继承的方式。

pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>01_test_springBoot_web</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <!-- 配置要继承父项目,继承Spring Boot中的资源 -->
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.1.10.RELEASE</version>
  14. </parent>
  15. <!-- 使用dependencyManagement 来管理
  16. 通过上面方式,就可以获取spring-boot-dependencies 2.1.10.RELEASE.pom文件中dependencyManagement配置的jar包依赖
  17. 相当于拿到了spring-boot-dependencies 中的pom文件中dependencyManagement中声明的依赖
  18. -->
  19. <!-- <dependencyManagement>-->
  20. <!-- <dependencies>-->
  21. <!-- <dependency>-->
  22. <!-- <groupId>org.springframework.boot</groupId>-->
  23. <!-- <artifactId>spring-boot-dependencies</artifactId>-->
  24. <!-- <version>2.1.10.RELEASE</version>-->
  25. <!-- <type>pom</type>-->
  26. <!-- <scope>import</scope>-->
  27. <!-- </dependency>-->
  28. <!-- </dependencies>
  29. </dependencyManagement>-->
  30. <dependencies>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-web</artifactId>
  34. </dependency>
  35. </dependencies>
  36. </project>

看我们项目的maven的依赖



展示的有7个主体依赖(并不是所有依赖),其中有Spring boot、json、tomcat、Spring web、Spring webmvc、validator(参数校验)。

我们的maven中只显示依赖了spring-boot-starter-web,这个玩意称为Spring web的启动器,Spring Boot中集成了Spring web框架,所以Spring Boot会自动将Spring Web框架以及所需的依赖都帮我们导入,这就体现了Spring Boot对依赖的统一管理特点。

接下来我们开始编写逻辑代码,在com.lyl.controller下新建MyController.java:

  1. package com.lyl.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. @Controller
  6. public class MyController {
  7. @ResponseBody
  8. @RequestMapping("show")
  9. public String show(){
  10. return "Hello Spring Boot!";
  11. }
  12. }

controller层写好了,接下来是不是应该将项目部署到我们本地Tomcat中呢?按理来说我们是部署不了的,因为这个时候项目中并没有webapp文件夹,也没有WEB-INF,那我们如何运行呢?

前面说我们导入的依赖中有Tomcat的依赖,也就是说Spring Boot本身就为我们这个项目内嵌了Tomcat,我们可以直接在Spring Boot上运行我们的web项目。

但是我们不知道从哪里开始运行,Spring Boot为我们提供了应用入口,其实就是一个普通的Java类,但是Spring Boot官方建议我们将入口类放在根目录下。



MyApplication.java:

  1. package com.lyl;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. // 可以自动扫描当前类的包及其子包下的所有注解
  5. /*
  6. @SpringBootApplication代表的是组合注解:
  7. @Configuration
  8. @EnableAutoConfiguration
  9. @ComponentScan
  10. */
  11. @SpringBootApplication
  12. public class MyApplication {
  13. public static void main(String[] args) {
  14. SpringApplication.run(MyApplication.class,args);
  15. }
  16. }

运行main得出结果:



从中我们可以看到Tomcat开放的端口号,以及web项目的根url

浏览器输入:localhost:8080/show

成功接收到服务器返回的信息!代表我们使用Spring Boot搭建web项目已经成功,我们使用maven将我们项目打包,在target中发现war包没有了,取而代之的竟然是jar包!为什么会这样?jar包可以被java的编译器识别,而war包是给tomcat的,也就是说,Spring Boot帮我们内置了tomcat(需要依赖),所以我们就省去了部署项目这一步骤,tomcat的相关配置也只要在Spring Boot配置文件中配置就好。

到此我们对Spring Boot应该有了一个初步的了解。

Spring Boot的理解

Spring Boot不是Spring的替代品,Spring Boot依赖Spring框架来管理对象的依赖。Spring Boot也不是精简版的Spring,Spring Boot为Spring做好了面向各种企业级产品的准备。

我们如果Spring基础不扎实,学习Spring Boot时遇到一些知识点可能理解困难,效率不高。所以我们首先应该学好Spring框架的基础。核心依旧是Spring。

在我们以往使用Spring框架,一般是使用Spring中的模块,web容器启动时再去进行Spring容器的注册和初始化,而Spring Boot是以Spring启动后去加载web容器,所以叫创建独立的Spring应用。

Spring Boot学习(一)——Spring Boot介绍的更多相关文章

  1. Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)

    Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...

  2. Spring Cloud 学习 之 Spring Cloud Eureka(搭建)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...

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

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

  4. Spring Boot学习笔记——Spring Boot与MyBatis的集成(项目示例)

    1.准备数据库环境 # 创建数据库 CREATE DATABASE IF NOT EXISTS zifeiydb DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  5. spring cloud学习(六)Spring Cloud Config

    Spring Cloud Config 参考个人项目 参考个人项目 : (希望大家能给个star~) https://github.com/FunriLy/springcloud-study/tree ...

  6. Spring 框架学习(1)--Spring、Spring MVC扫盲

    纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...

  7. Spring Cloud 学习 (九) Spring Security, OAuth2

    Spring Security Spring Security 是 Spring Resource 社区的一个安全组件.在安全方面,有两个主要的领域,一是"认证",即你是谁:二是& ...

  8. Spring框架学习03——Spring Bean 的详解

    1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...

  9. Spring框架学习02——Spring IOC 详解

    1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用 ...

  10. Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

    最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...

随机推荐

  1. ES6与ES2015、ES2016以及ECMAScript的区别

    1. ECMAScript 和 JavaScript 的关系 ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现. javascript是netscape ...

  2. erlang学习笔记

    安装 Ubuntu Server上: sudo apt-get install erlang 如果安装时下载 太慢,可手工下载deb包( esl-erlang_16.a-rc1_ubuntu_prec ...

  3. 【原创】Dubbo 2.7.8多个远程代码执行漏洞

    马上年底了,发现年初定的几个漏洞的KPI还没来得及完成,趁着最近有空赶紧突击一波,之前业务部门被爆过Dubbo的漏洞,干脆就把Dubbo拖过来挖一把.之前没用过Dubbo,既然要挖它就先大体了解了一下 ...

  4. 构建工具之Maven的使用(一)

    一.前言 对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程.但是当工 ...

  5. Java通过SSLEngine与NIO实现HTTPS访问

    Java使用NIO进行HTTPS协议访问的时候,离不开SSLContext和SSLEngine两个类.我们只需要在Connect操作.Connected操作.Read和Write操作中加入SSL相关的 ...

  6. idea 生成 javaDoc

    idea 生成 javaDoc 使用命令 Generate javaDoc - 直接输入javadoc就可以了 Generate JavaDoc scope 3个区域,一般选择第三项自定义,选择模块, ...

  7. NOIP 模拟 $24\; \rm matrix$

    题解 \(by\;zj\varphi\) 发现 \(\rm n,m\) 都很小,考虑分行状压. 但是上一行和下一行的按钮状态会对当前行造成影响,所以再枚举一个上一行的按钮状态. 因为对于两行,只有如下 ...

  8. idea中使用docker插件部署项目

    安装docker 如果你之前安装过 docker,请先删掉 sudo yum remove docker docker-common docker-selinux docker-engine 安装一些 ...

  9. 在VS工程中,添加c/c++工程中外部头文件(.h),lib库,dll库的基本步骤

    选择工程,右键-工程属性 其中: VC++目录 -->包含目录,对所有的项目及未来新建的项目都有效 c/c++-->常规-->附加包含目录,仅对当前项目有效 绝对路径设置方法: 在V ...

  10. windows下删除文件夹里的 .svn

    windows下: 删除文件夹里的 .svn, cmd  进入相应目录  运行    for /r ./ %a in (./) do @if exist "%a/.svn" rd ...