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:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId>
<artifactId>01_test_springBoot_web</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 配置要继承父项目,继承Spring Boot中的资源 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.10.RELEASE</version>
</parent> <!-- 使用dependencyManagement 来管理
通过上面方式,就可以获取spring-boot-dependencies 2.1.10.RELEASE.pom文件中dependencyManagement配置的jar包依赖
相当于拿到了spring-boot-dependencies 中的pom文件中dependencyManagement中声明的依赖
-->
<!-- <dependencyManagement>-->
<!-- <dependencies>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-dependencies</artifactId>-->
<!-- <version>2.1.10.RELEASE</version>-->
<!-- <type>pom</type>-->
<!-- <scope>import</scope>-->
<!-- </dependency>-->
<!-- </dependencies>
</dependencyManagement>-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</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:

package com.lyl.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
public class MyController {
@ResponseBody
@RequestMapping("show")
public String show(){
return "Hello Spring Boot!";
}
}

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

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

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



MyApplication.java:

package com.lyl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; // 可以自动扫描当前类的包及其子包下的所有注解
/*
@SpringBootApplication代表的是组合注解: @Configuration
@EnableAutoConfiguration
@ComponentScan */
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class,args);
}
}

运行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. Linux各目录及每个目录的详细介绍总结

    Linux各目录及每个目录的详细介绍 [常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所 ...

  2. [论文阅读] Residual Attention(Multi-Label Recognition)

    Residual Attention 文章: Residual Attention: A Simple but Effective Method for Multi-Label Recognition ...

  3. React脚手架配置代理

    react脚手架配置代理 方法一 在package.json中追加如下配置 "proxy":"http://localhost:5000" 说明: 优点:配置简 ...

  4. Reuse Sonar Checkstyle Violation Report for Custom Data Analysis

    Write a violation rules file; Import it into Sonar as a Quality Profile named as "MyRules" ...

  5. wait_time参数

    1.未修改的 wait_timeout 的初始值是28800,单位为秒,等于8个小时 2.wait_timeout过大有弊端,其体现就是mysql里有大量的sleep进程无法及时释放,拖累系统性能 但 ...

  6. application.properties 和 pom.xml

    application.properties server.port=8080 server.tomcat.max-connections=10000 server.tomcat.max-thread ...

  7. 当任意文件上传偶遇Safedog

    0x01 写在前面 渗透过程中可能会经常遭遇WAF,此时不要轻易放弃,绞尽脑汁竭尽全力,或许弹尽粮绝之时也是柳暗花明之日. 0x02 过狗上传 一次项目渗透过程中,找个一处上传功能 先上传图片,测试上 ...

  8. DVWA-全等级命令行注入

    DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...

  9. python3.9 manage.py runserver 报错问题解决

    报错信息如下 You have 13 unapplied migration(s). Your project may not work properly until you apply the mi ...

  10. noip40

    T1 记当前位置 \(i\) 上的颜色,上次出现的位置为 \(last_{1}\) ,上上次出现的位置为 \(last_{2}\) ,则,把当前点的颜色加进来,并且让其产生贡献的话,则会对 \([la ...