2020最新SpringBoot第一集:入门(2020最新最易懂)

  学习思路:

  是什么?为什么要学,有什么用?有什么特点?简单明了的总结一句话!

  SpringBoot推荐开发工具:

    Spring Tool Suite、IDEA、Eclipse(需要安装插件)、Visual Studio 、Theia IDE。

  本人目前使用Eclipse(当前教案选择)或Spring Tool Suite。推荐使用IDEA(推荐理由:Eclipse没有集成工具,需要自行建立项目,搭建结构。Spring Tool Suite/IDEA都有集成,可以快速开发)

  环境:

  JDK8

  Eclipse.2020-06

  SpringBoot2.3.4

  Maven-3.6.x

一.SpringBoot是什么?

  简单来说:当你还在仅仅抓住SSH/SSM不放手时,技术更新了,如果你是一个资深的Java工程师,相信你完全明白,传统的SSH和SSM配置繁多,开发效率低,还存在着复杂繁琐的部署流程。(多则几十个配置文件,少则也有七八个。项目部署运行依赖底层环境Tomcat等)

  这种环境下,如果能有一款产品,来简化配置,简化部署,那将是非常享受的一个过程。SpringBoot就是你想象中的那个产品。

  概述

  Spring Boot是一套基于Spring框架的微服务框架,是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它基于“约定优于配置(COC)”的设计理念,实现了自动化配置解决方案,包括自动配置第三方资源。Spring Boot不是Spring解决方案的一个替代品,而是Spring的一个封装,从这方面又可以说它并不是一个全新的框架。而是一种衍生,是与 Spring 框架紧密结合用来改善用户体验的工具。所以,你以前可以用spring做的事情,现在用spring boot都可以做。

约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。(百科)

【个人理解SprongBoot的约定优与配置:用事先约定好的规则作为框架来写代码,而不是利用一个中心配置文件,减少配置文件得数量,把注意力集中在写代码逻辑上。】

在SpringBoot中,约定大于配置可以从以下两个方面来理解:

  1. 开发人员只需要关注程序应用中不符合约定的部分(简单来说就是无法限定的例如:数据库连接的配置/业务逻辑的处理应当关注)
  2. 在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想。(例如:SSM的一些常用依赖,应当没必要去纠结,直接有SpringBoot架构引入)

总的来说,上面两条都遵循了推荐默认配置的思想。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的“约定”。

  优缺点

  优点

  • 继承了 Spring 框架自身优秀的特性。 能够让配置更简单,通过自动配置快速搭建 Spring 应用项目。(只需要导入相应的starter依赖包,就自动整合了)
  • 内嵌了常见的 Web 服务器,让你随时能使用 Tomcat、Jetty、undertow 等,无需为了部署而搭建第三方容器环境。
  • 能够以 jar 文件形式独立运行项目(SpringBoot搭建的所有项目都是jar包形式[内置服务器])。
  • 采用java config的方式,提供更强大的注解,让业务实现更简化。
  • 提供了企业生产级项目的服务监控方案,让监控更加简单。
  • 还有一些非功能性的通用配置,适应更多的开发需求。
  • 可进行分布式开发,结合 Spring Cloud 进行微服务开发。

  缺点:

  • 依赖太多:一个简单的SpringBoot应用都有好几十M。
  • SpringBoot默认不推荐使用JSP视图,官方推荐使用Thymeleaf或者Freemarker模板引擎。

二.SpringBoot的第一个程序

  构建SpringBoot第一个案例的方式有很多:

  Eclipse手动构建(当前演示)

  通过Spring官方提供的start.spring.io创建"web"项目。(初学者推荐)  

1.新建Maven工程,打包方式位jar。

SpringBoot能够以 jar 文件形式独立运行项目,所以无论是WEB程序还是Java程序,都可以直接打包位jar文件,无需依赖第三方容器。

2.修改pom.xml文件引入依赖

  由于是第一次编写SpringBoot程序,所以当加入依赖后,会显得很慢,是因为SpringBoot需要加载很多的依赖。(如果你没联网,那Game Over了)

 1 <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2 <modelVersion>4.0.0</modelVersion>
3 <groupId>com.xsge</groupId>
4 <artifactId>springboot_demo01</artifactId>
5 <version>0.0.1-SNAPSHOT</version>
6
7 <!-- 引入SpringBoot核心父依赖 -->
8 <parent>
9 <groupId>org.springframework.boot</groupId>
10 <artifactId>spring-boot-starter-parent</artifactId>
11 <version>2.3.4.RELEASE</version>
12 <relativePath/>
13 </parent>
14
15 <dependencies>
16 <dependency>
17 <!-- 引入SpringBoot整合WEB依赖:内置Tomcat容器 -->
18 <groupId>org.springframework.boot</groupId>
19 <artifactId>spring-boot-starter-web</artifactId>
20 </dependency>
21
22 <!-- 引入SpringBoot整合test测试依赖 -->
23 <dependency>
24 <groupId>org.springframework.boot</groupId>
25 <artifactId>spring-boot-starter-test</artifactId>
26 <scope>test</scope>
27 <!-- SpringBoot整合test测试低版本Junit -->
28 <exclusions>
29 <exclusion>
30 <groupId>org.junit.vintage</groupId>
31 <artifactId>junit-vintage-engine</artifactId>
32 </exclusion>
33 </exclusions>
34 </dependency>
35 </dependencies>
36
37 <!-- 引入打包插件 -->
38 <build>
39 <plugins>
40 <plugin>
41 <groupId>org.springframework.boot</groupId>
42 <artifactId>spring-boot-maven-plugin</artifactId>
43 </plugin>
44 </plugins>
45 </build>
46
47 </project>

3.编写SpringBoot主程序(启动类)

  SpringBoot启动工程时,只需要一个入口类即可。

 1 import org.springframework.boot.SpringApplication;
2 import org.springframework.boot.autoconfigure.SpringBootApplication;
3
4 @SpringBootApplication // 标注这是一个SpringBoot应用程序
5 public class SpringbootDemo01Application {
6 /**
7 * SpringBoot应用程序执行入口,是通过main函数启动应用程序
8 */
9 public static void main(String[] args) {
10 // 通过SpringApplication调用run的方式启动工程
11 SpringApplication.run(SpringbootDemo01Application.class, args);
12 }
13 }

4.新增控制器

  当执行启动类后。SpringBoot会自动扫描@SpringBootApplication注解的同级目录和子目录下的所有Spring组件类,并加载对象到Spring容器中。

  简单来说:就是其他业务类,控制器等都必须放在启动类同级或子级目录下(通常放在子级)。

1 @Controller    // 标注为Spring组件
2 public class HelloController {
3
4 @RequestMapping("/helloSpringBoot") // 标注访问地址
5 @ResponseBody // 标注返回结果位JSON串
6 public String helloSpringBoot() {
7 return "SpringBoot,HelloWord!";
8 }
9 }

5.运行SpringBoot入口类

运行后控制太如下:

6.打开浏览器测试访问

  输入访问地址:http://localhost:8080/helloSpringBoot  测试查看页面显示结果!

7.pom依赖说明

  Spring Boot提供了许多开箱即用的依赖模块,这些模块都是以spring-boot-starter-XX命名的。比如要开启Spring Boot的web功能,只需要在pom.xml中配置spring-boot-starter-web依赖即可。

  第一个程序依赖说明:如下

  1.spring-boot-starter-parent

  spring-boot-starter-parent指定了当前项目为一个Spring Boot项目,它提供了诸多的默认Maven依赖。具体可查看目录spring-boot-dependencies-2.3.4.RELEASE.pom文件:如图

  需要说明的是,并非所有在<properties>标签中配置了版本号的依赖都有被启用,其启用与否取决于您是否配置了相应的starter。比如tomcat这个依赖就是spring-boot-starter-web的传递性依赖.当然,我们可以手动改变这些依赖的版本。比如我想把thymeleaf的版本改为3.0.0.RELEASE,我们可以在pom.xml中进行重写properties标签实现自定义版本。

  例如:自定义jstl版本

1 <properties>
2 <jstl.version>1.2</jstl.version>
3 </properties>

  2.spring-boot-starter-web

  spring-boot-starter-web指定了当前项目为一个Spring Boot  WEB项目。因为其依赖于spring-boot-starter-parent,所以这里可以不用配置version。保存后Maven会自动帮我们下载spring-boot-starter-web模块所包含的jar文件。我们也可以手动排除一些我们不需要的依赖,首先在pom.xml中spring-boot-starter-xxx下排除不需要的依赖,然后再手动引入自己需要的依赖即可。

  如果需要具体查看spring-boot-starter-web包含了哪些依赖,我们可以右键项目选择run as → Maven Build…,在Goals中输入命令dependency:tree,然后点击run即可在eclipse控制台查看到详情信息。

  3.spring-boot-maven-plugin

  spring-boot-maven-plugin为Spring Boot Maven插件,主要提供了两方面的功能,但是通常我们关注最多的仅仅是第一个

  A.把项目打包成一个可执行的超级JAR,包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,打包后,可以通过命令:【Java  -jar   打包后的jar文件.jar】 独立运行程序。

  (你可以将这个强大的功能理解为微服务小程序)

  B.搜索public static void main()...方法,并标记为可运行类。

SpringBoot的第一个程序完事了,祝你学习愉快!!!!

其他开发工具项目构建请等待,文档完善中!!!

SpringBoot第一集:入门(2020最新最易懂)的更多相关文章

  1. SpringBoot第二集:注解与配置(2020最新最易懂)

    2020最新SpringBoot第二集:基础注解/基础配置(2020最新最易懂) 一.Eclipse安装SpringBoot插件 Eclipse实现SpringBoot开发,为便于项目的快速构建,需要 ...

  2. SpringBoot第九集:整合JSP和模板引擎Freemarker/Thymeleaf(2020最新最易懂)

    SpringBoot第九集:整合JSP和模板引擎(2020最新最易懂) 当客户通过前端页面提交请求后,我们以前是怎么做的?后端接收请求数据,处理请求,把响应结果交给模板引擎JSP,最后将渲染后的JSP ...

  3. SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂)

    SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂) 一,页面国际化 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符 ...

  4. SpringBoot第十二集:度量指标监控与异步调用(2020最新最易懂)

    SpringBoot第十二集:度量指标监控与异步调用(2020最新最易懂) Spring Boot Actuator是spring boot项目一个监控模块,提供了很多原生的端点,包含了对应用系统的自 ...

  5. SpringBoot第三集:热部署与单元测试(2020最新最易懂)

    SpringBoot第三集:热部署与单元测试(2020最新最易懂) 有兴趣的可以先参考附录简单了解SpringBoot自动装配流程. 一.SpringBoot开发热部署 项目开发中,你是否也遇到更新配 ...

  6. SpringBoot第四集:静态资源与首页定(2020最新最易懂)

    SpringBoot第四集:静态资源与首页定(2020最新最易懂) 问题 SpringBoot构建的项目结构如下:没有webapp目录,没有WEB-INF等目录,那么如果开发web项目,项目资源放在那 ...

  7. SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂)

    SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂) 在实际开发过程中,经常会碰见一些比如系统启动初始化信息.统计在线人数.在线用户数.过滤敏/高词汇.访问权限控制(URL级别 ...

  8. SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂)

    SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂) 当前环境说明: Windows10_64 Maven3.x JDK1.8 MySQL5.6 SpringTool ...

  9. SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂)

    SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂) 1.SpringBoot整合Druid Druid是阿里巴巴的一个开源项目,是一个数据库连接池的实现,结合了C3P0. ...

随机推荐

  1. Shell学习(五)Shell输出命令

    一.echo命令 #1.直接显示字符串 echo "It is a test" #输出:It is a test #2.显示转义字符 echo "\"It is ...

  2. javaweb修改表单参数---使用过滤器

    需求: 所有的字段要将空字符串转成null: 问题: 我们知道表单如果不写值的时候,传递到后台的不是null,而且是空字符串.那么怎么改成null呢? 解决: 使用过滤器,将请求的参数修改过后继续,再 ...

  3. 虚拟机系列 | JVM运行时数据区

    本文源码:GitHub·点这里 || GitEE·点这里 一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱 ...

  4. Java源码赏析(三)初识 String 类

    由于String类比较复杂,现在采用多篇幅来讲述 这一期主要从String使用的关键字,实现的接口,属性以及覆盖的方法入手.省略了大部分的字符串操作,比如split().trim().replace( ...

  5. python安装和首次使用

    安装: 1.安装python环境: 首先打开python官网,下载配置环境:www.python.org 点击上方downloads, 根据系统选择python环境下载 找到 windows x86- ...

  6. RT Thread的SPI设备驱动框架的使用以及内部机制分析

    注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. -------------------- ...

  7. Java知识系统回顾整理01基础04操作符01算术操作符

    一.算数操作符类别 基本的有: + - * / % 自增 自减: ++ -- 二.基本算数操作符 + - * / 基本的加 减 乘 除 public class HelloWorld { public ...

  8. 剑指Offer(四):重建二叉树

    一.前言 刷题平台:牛客网 二.题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6, ...

  9. 【优化】单调队列与dp

    笔者大概看了一下单调队列对于DP的优化,故撰此文,望有帮助. (dp还是推式子难啊qwq) 例题1. 题目大意:在n个数的序列中,选择数字,使得其连续不超过k个数,且和最大. 本题的方程相对好推:设d ...

  10. 彻底理解红黑树及JavaJDK1.8TreeMap源码分析

    1. 定义 红黑树也是二叉查找树,我们知道,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态.红黑树 ...