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


    2020最新SpringBoot第一集:入门HelloWord(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都可以做。

    微服务:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建

    约定优于配置(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 <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6     <!-- SpringBoot基础父工程依赖 -->
     7     <parent>
     8         <groupId>org.springframework.boot</groupId>
     9         <artifactId>spring-boot-starter-parent</artifactId>
    10         <version>2.3.4.RELEASE</version>
    11         <relativePath />
    12     </parent>
    13     <groupId>com.xsge</groupId>
    14     <artifactId>springboot_demo01</artifactId>
    15     <version>0.0.1-SNAPSHOT</version>
    16     <name>springboot_demo01</name>
    17     <description>Demo project for Spring Boot</description>
    18     <!-- 编译环境JDK版本(非必选项,但SpringBoot最低要求JDK1.8) -->
    19     <properties>
    20         <java.version>1.8</java.version>
    21     </properties>
    22 
    23     <dependencies>
    24         <!-- SpringBoot场景启动器依赖(非必选依赖)官方推荐引入 -->
    25         <dependency>
    26             <groupId>org.springframework.boot</groupId>
    27             <artifactId>spring-boot-starter</artifactId>
    28         </dependency>
    29         <!-- SpringBoot测试依赖 -->
    30         <dependency>
    31             <groupId>org.springframework.boot</groupId>
    32             <artifactId>spring-boot-starter-test</artifactId>
    33             <scope>test</scope>
    34             <!-- 排除junit.vintage -->
    35             <exclusions>
    36                 <exclusion>
    37                     <groupId>org.junit.vintage</groupId>
    38                     <artifactId>junit-vintage-engine</artifactId>
    39                 </exclusion>
    40             </exclusions>
    41         </dependency>
    42         <!-- SpringBoot整合web:内置Tomcat容器 -->
    43         <dependency>
    44             <groupId>org.springframework.boot</groupId>
    45             <artifactId>spring-boot-starter-web</artifactId>
    46         </dependency>
    47     </dependencies>
    48 
    49     <!-- SpringBoot工程打包插件 -->
    50     <build>
    51         <plugins>
    52             <plugin>
    53                 <groupId>org.springframework.boot</groupId>
    54                 <artifactId>spring-boot-maven-plugin</artifactId>
    55             </plugin>
    56         </plugins>
    57     </build>
    58 </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文件:如图

      (Eclipse查看源码快捷键:安装Ctrl键 鼠标左键点击即可)

      需要说明的是,并非所有在<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()...方法,并标记为可运行类。

    8.启动项目方式

      方式一:运行启动类

      方式二:Maven命令:mvn  spring-boot:run

      方式三:Java  -jar  打包的jar文件全名   --server.port=端口

    三.SpringBoot更多依赖及使用说明

      spring-boot-starter:SpringBoot场景启动器基本依赖,其他的都是以spring-boot-starter开头,不同的需求Spring应用引入不同的启动器依赖即可。(SpringBoot提供了N多的启动器依赖,如下:)

      打开Spring官网。以下应用程序启动器由组下的 Spring Boot 提供:

      当然SpringBoot虽然集成了许多依赖,但也不是万能的,不属于Spring“全家桶”的组件,就需要我们自己引入。例如:MyBatis相关依赖。

     

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

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

  • 相关阅读:
    机器学习问题
    sklearn学习笔记
    机器学习之广义线性模型
    因子学习笔记、问题汇总
    数学相关知识汇总
    下载技巧汇总
    python scipy库
    20180122 PyTorch学习资料汇总
    机器学习基本概念笔记
    机械学习框架、分类
  • 原文地址:https://www.cnblogs.com/xsge/p/13864100.html
Copyright © 2020-2023  润新知