梅开二度-SpringBoot01

2022-10-24 08:17:16

目录

SpringBoot 梅开二度版

官方文档

https://docs.spring.io/spring-boot/docs/2.5.8-SNAPSHOT/reference/htmlsingle/#getting-started

01、SpringBoot的概述

Spring Boot 是由 Pivotal 团队提供的全新框架。可以轻松创建独立的、生产级的基于 Spring 的应用程序。可用于快速开发扩展性强、微小项目、业界称之为:“微框架”。毋庸置疑SpringBoot的诞生不仅给传统的企业级项目与系统架构带来了全面改进以及升级的可能。同时也给Java程序员带来诸多益处。是Java开发的一大利器。

从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯优于配置” (项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:

springboot其实从真正意义上来说,不能称之为框架,它是基于spring的应用程序的脚手架(造好的轮子)。可用于快速开发扩展性强、微小项目。比如:摒弃了传统的开发模式大量xml配置的问题,依赖外部容器问题,以及依赖jar包的问题。说白了:就把程序员的开发工作从每天日常的开发中繁复问题全部解放,变得非常的和易用,让程序员更多的时间关注到业务,而不应该每天在做配置和大量的启动工作。所以这也就是说为什么springboot不是一个框架。

底层依赖:spring

特点

01、能够快速创建独立的构建 Spring 应用程序

02、直接嵌入Tomcat、Jetty或Undertow(无需部署WAR文件)

image-20211228174136634

03、提供自以为是的“starter”依赖项以简化您的构建配置

依赖jar的完整的开发历程是:

  • 从jsp/servlet - ssh 这个时代依赖第三jar是通过:

    • 1、手动 + 官网下载
    • 2、下载好放入 /webroot/WEB-INF/lib
    • 3、 很多框架的包相互依赖,每个jar官网都不一样

    **缺点:**官网太多,网速太慢,包的依赖版本必须要匹配,非常耗时。
    **优点:**版本是自己去查找,比较清晰,不需要额外在下载了。

  • ssh–ssm : 出现jar的依赖管理工具: ant – > maven

    • ant 使用非常的复杂,一般可配置太啰嗦
    • maven 其实就是简单ant的版本,取代ant的繁复的配置和构建的问题。 maven不仅仅只是为了解决jar的依赖问题,还解决项目依赖和构建问题,以及jar仓库管理问题。
    • gradle :服务anroid应用程序开发的包管理,但是有企业用,用并没有maven那么多。

** 缺点:**你需要额外学习maven, 学习成本变高, 它一定依赖网络
** 好处:不需要自己手动下载jar依赖,构建的问题。
** 没有解决:jar依赖的版本问题,比如如果你开发ssm项目,maven的pom.xml文件中就必须把spring的七大核心包都要进行依赖, spring.jar ---- fastjson.xml,文件上传:spring-web.jar common-fileuploader.jar,common-file.jar

  • springboot提供了 starter机制:默认装配配置类的问题 和 jar依赖的问题。

    • spring-boot-starter-web.jar
      • tomcat
      • log
      • spring-web spring-webmvc
      • json

    你需要额外学习maven, 学习成本变高, 它一定依赖网络

    **好处:**就程序员不需要在去关注,这个jar依赖另外一个jar包的问题,全部自动进行依赖匹配。如果没有这个机制,比如未来要依赖 mybatis-plus-boot-starter,你可以就自己去手动的依赖下面的包:

    • mybatis-version
    • mybatis-plus-version
    • spring-jdbc–version
    • myabtis-spring-version

04、集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。

05、零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。

06、 Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备。

07、提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)提供生产就绪功能,例如指标、运行状况检查和外部化配置–Actual。

总结

用来简化新 Spring 应用的初始搭建以及开发过程。它依赖spring,只不过是spring应用程序开发的一种简化。或者你可以这样理解,springboot是spring框架的一个产品。

02、Spring Boot 在应用中的角色

概述

Spring Boot 是基于 Spring Framework 来构建的,Spring Framework 是一种 J2EE 的框架(什么是 J2EE?)
Spring Boot 是一种快速构建 Spring 应用脚手架。
Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用

总结

Spring Boot 中流砥柱,承上启下。如果你不学习springBoot后面的springcloud你将无法开发。

理解

vue —框架 vue-cli 脚手架 - 产品若依、antd 你们公司的产品
spring–框架 springboot脚手架 — 个人资讯系统,旅游项目

03、SpringBoot系统环境要求(重点)

进入企业对环境理解的重要性

未来如果你进入到企业,你开发的

  • 01、一定先把代码下载下来,
  • 02、确定你项目的技术架构
  • 03、运行你的项目。但是在运行之前,最好一定尽早的问,公司是否有产品的项目白皮书(说明书),如果没有,一定问如果遇到问题,我可以咨询哪位。
  • 04、运行这个项目,现在公司的一个基础环境是什么样子的呢?
  • 05、然后在去运行项目。

SpringBoot的环境要求

(1)JDK 环境必须是 1.8 或者jdk11版本及以上
(2)后面要使用到 Maven 管理工具 3.5+ 及以上版本 建议是:3.6 不要用最新。
(3)内置了Tomcat9.x/Servlet4.x
(4)开发工具建议使用 IDEA,也可以 MyEclipse,为了实现一站式服务。

官方提供的eclipse工具:https://spring.io/tools (热加载 改的类自动重启)

Maven 安装与环境变量配置

(1)Maven 安装:

在官网下载:http://maven.apache.org/download.cgi

历史版本下载:https://archive.apache.org/dist/maven/maven-3/

image-20211228174215727

(2)Maven 配置环境变量:

解压到一个路径,然后配置环境变量:

  • 新建变量名:MAVEN_HOME 变量值:D:\server\apache-maven-3.6.0(这是我的 MAVEN 路径)
  • 编辑变量名:Path 在最前面加上:%MAVEN_HOME%\bin

(3)检查是否配置成功:

在命令行输入:

mvn -V

然后会一大堆东西:

image-20211228174238638

(4)配置 maven 仓库:

1.打开 maven 文件夹下的 config 文件夹下的 settings.xml;
2.找到 localRepository 标签,此时是被注释掉的,我们解除注释,然后配置一个路径,例如:D:/space/MavenRepository/maven_jar,这样以后 MAVEN 管理下载的jar 包都会在这个路径下。
【注意】:注意结点的位置,先找到注释掉的部分,贴在下面

<localRepository>D:\space\MavenRepository\maven_jar</localRepository>

image-20211228174251457

3.配置远程仓库,找到 mirrors 标签

<!--远程仓库--><mirror><id>aliyun</id><name>aliyun Maven</name><mirrorOf>*</mirrorOf><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>

4.当然我们需要先建这样一个目录结构,然后还要把settings.xml 复制一份到 D:/space/MavenRepository 下

image-20211228174302666

(5)在 idea 配置 maven

点击【File】>【Settings】>搜索【Maven】,按截图配置安装目录和选择刚刚 settings 配置文件;

image-20211228174330937

选择完settings之后,本地仓库自动改成settings文件中配置的;点击apply,再点击ok即配置完成。

给未来的新工程提供配置

概述

上面的配置只限于当前工程,如果未来你新建的工程要想只配置一次,然后后续不在配置你就必须配置如下:

image-20211228174347665

我给未来新建的maven工程,提供一劳永逸的配置。如下:

maven配置

image-20211228174415595

自动编译

image-20211228174454419

修改默认编码

image-20211228174508558

04、使用 Idea 快速搭建 Spring Boot

官网构建器

快速构建器:https://start.spring.io/

快速入门指南:https://spring.io/quickstart

第一步:新建 Spring Initializr 项目:

(1)选择 Spring Initializr

image-20211228174524196

(2)选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:\Program Files\Java\jdk1.8.0_191 目录:然后选择默认的 url (不用管)点击【Next】:

image-20211228174601401

(3)先勾选上 Web 依赖:

image-20211228174635454

(4)如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDEA 下载相应的 依赖包,默认创建好的项目结构如下:

image-20211228174701481

(5) 关于静态资源修改不重启的问题。如下

image-20211228174713595

image-20211228174724075

提醒:上面的自动加载,不包括修改类,添加方法,添加属性是不会有效的。 其实有一个自动热加载的工具jrebel 建议不去玩,因为收费的。而且手动启动不会浪费很多时间,所以不要去研究。

项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

  • SpringbootApplication: 一个带有 main() 方法的类,用于启动应用程序
  • SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
  • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
  • pom.xml: Maven 构建说明文件

第二步:HelloController

在 【main/java/com.listudy.web】包下新建一个【HelloController】:

image-20211228174740066

packagecom.listudy.web;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;/**
 * Description:
 * Author: li Administrator
 * Version: 1.0
 * Create Date Time: 2021/12/11 21:25.
 * Update Date Time:
 *
 * @see
 */@RestControllerpublicclassHelloWorld{@GetMapping("/hello")publicStringhello(){return"Hello Springboot!!!";}}

第三步:利用 IDEA 启动 Spring Boot

(1)我们回到 SpringbootApplication 这个类中,然后右键点击运行:

image-20211228174907083

(2)会提示 Maven 导包,点击 import

image-20211228174918439

(3)注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat
等待一会儿就会看到下方的成功运行的提示信息:

image-20211228174929106

(4)此时,可以看到我们的 Tomcat 运行在 8080 端口,我们来访问下面地址试一下:

image-20211228174946607

05、Spring Boot 项目文件介绍

一、解析 pom.xml 文件

(1)让我们来看看默认生成的 pom.xml 文件中到底有些什么:

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--springboot版本的控制--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.7</version><!--如果未来你要升级springboot修改此处的版本就可以了--><relativePath/></parent><!--项目的maven的坐标骨架,把当前项目生成在本地仓库的目录--><groupId>com.listudy</groupId><artifactId>springboot</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot</name><description>springboot</description><!--maven属性配置,一般用来做version控制居多--><properties><java.version>1.8</java.version></properties><!--项目依赖--><dependencies><!--springboot的web的starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--springboot的test的starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><!--springboto的插件,用来打包和构建使用--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

image-20211228175000369

(2)我们可以看到一个比较陌生一些的标签 ,这个标签是在配置 Spring Boot 的父级依赖:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.8</version><relativePath/></parent>

有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

下面的版本为什么不加version号:

<!--springboot的web的starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

因为:spring-boot-starter-parent 是一个父工程,spring-boot-starter-web和spring-boot-starter-test等都是子工程,而子工程的版本都已经由父工程已经管理起来了。所以在项目开发中我们就不需要指定版本号。那到底parent工程管理了多少呢?点击进去查看一下呗:其实马上要讲的 starter。

<activemq.version>5.16.3</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.91</appengine-sdk.version><artemis.version>2.17.0</artemis.version><aspectj.version>1.9.7</aspectj.version><assertj.version>3.19.0</assertj.version><atomikos.version>4.0.6</atomikos.version><awaitility.version>4.0.3</awaitility.version><build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version><byte-buddy.version>1.10.22</byte-buddy.version><caffeine.version>2.9.2</caffeine.version><cassandra-driver.version>4.11.3</cassandra-driver.version><classmate.version>1.5.1</classmate.version><commons-codec.version>1.15</commons-codec.version><commons-dbcp2.version>2.8.0</commons-dbcp2.version><commons-lang3.version>3.12.0</commons-lang3.version><commons-pool.version>1.6</commons-pool.version><commons-pool2.version>2.9.0</commons-pool2.version><couchbase-client.version>3.1.7</couchbase-client.version><db2-jdbc.version>11.5.6.0</db2-jdbc.version><dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version><derby.version>10.14.2.0</derby.version><dropwizard-metrics.version>4.1.25</dropwizard-metrics.version><ehcache.version>2.10.9.2</ehcache.version><ehcache3.version>3.9.5</ehcache3.version><elasticsearch.version>7.12.1</elasticsearch.version><embedded-mongo.version>3.0.0</embedded-mongo.version><flyway.version>7.7.3</flyway.version><freemarker.version>2.3.31</freemarker.version><git-commit-id-plugin.version>4.0.5</git-commit-id-plugin.version><glassfish-el.version>3.0.3</glassfish-el.version><glassfish-jaxb.version>2.3.5</glassfish-jaxb.version><groovy.version>3.0.8</groovy.version><gson.version>2.8.7</gson.version><h2.version>1.4.200</h2.version><hamcrest.version>2.2</hamcrest.version><hazelcast.version>4.1.5</hazelcast.version><hazelcast-hibernate5.version>2.2.1</hazelcast-hibernate5.version><hibernate.version>5.4.32.Final</hibernate.version><hibernate-validator.version>6.2.0.Final</hibernate-validator.version><hikaricp.version>4.0.3</hikaricp.version><hsqldb.version>2.5.2</hsqldb.version><htmlunit.version>2.49.1</htmlunit.version><httpasyncclient.version>4.1.4</httpasyncclient.version><httpclient.version>4.5.13</httpclient.version><httpclient5.version>5.0.4</httpclient5.version><httpcore.version>4.4.14</httpcore.version><httpcore5.version>5.1.1</httpcore5.version><infinispan.version>12.1.7.Final</infinispan.version><influxdb-java.version>2.21</influxdb-java.version><jackson-bom.version>2.12.4</jackson-bom.version><jakarta-activation.version>1.2.2</jakarta-activation.version><jakarta-annotation.version>1.3.5</jakarta-annotation.version><jakarta-jms.version>2.0.3</jakarta-jms.version><jakarta-json.version>1.1.6</jakarta-json.version><jakarta-json-bind.version>1.0.2</jakarta-json-bind.version><jakarta-mail.version>1.6.7</jakarta-mail.version><jakarta-persistence.version>2.2.3</jakarta-persistence.version><jakarta-servlet.version>4.0.4</jakarta-servlet.version><jakarta-servlet-jsp-jstl.version>1.2.7</jakarta-servlet-jsp-jstl.version><jakarta-transaction.version>1.3.3</jakarta-transaction.version><jakarta-validation.version>
  • 作者:sunny_1100
  • 原文链接:https://blog.csdn.net/L_994572281_LYA/article/details/122199160
    更新时间:2022-10-24 08:17:16