Spring Boot 学*之初遇(一)

发布于:2021-05-14 22:57:51


在学*Spring Boot 之前,我们先要知道学*的三要素即WHAT、WHY、HOW。有了这三要素,我们不管学*什么技术都如有神助,而且不会迷茫。




引言

说到Spring,估计会Java的人没有不认识这个的。它是什么呢?估计有一大堆答案,IOC?AOP?我这里更看好另一种说法,“胶水”。这个名词看起来和软件开发没有关系,其实恰恰相反,这个名词刚好完美的诠释了Spring,额,至少在Spring Boot 出现以前。要先回答Spring是什么,就先要知道Spring是干什么的,即我们要知道“WHAT”,何不先了解下“WHY”。


我们知道Java的相关技术、框架数不胜数。有数据库层的JDBC、Mybatis、Hibernate;业务控制层的Struts2、SpringMVC;有视图显示层的Thymeleaf、VUE、bootstrap (这些虽然与Java无关,但是Web项目中却时刻相关)。如何将这些整合在一起呢?我们可能都知道早些年最流行的三大框架,学好数理化,走遍天下都不怕,好吧,不是数理化,是SSH即Spring,Struts2,Hibernate。Spring就是一个胶水,整合了Struts2和Hibernate。*些年,又流行了新的三大框架,SSM即Spring,SpringMVC,Mybatis,这个时候Spring依旧是作为整合Mybatis的一个胶水(SpringMVC本身就是Spring的一个子项目)。


这里,我们不谈Spring,我们只谈Boot。上面说了一大堆泥水匠的工作,用胶水干啥干啥的,那么Spring能否摆脱胶水的命运,自己直接盖房子做项目呢?Spring Boot告诉你,可以,而且很快。


官方文档定义

Spring 官网 Spring Boot 是官网推荐的第一个内容,也是首推。Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring. Spring Boot takes an opinionated view of building production-ready applications. 解释下来就是Spring Boot 是为了快速的启动且最小化配置Spring应用而设计的。Spring Boot 采用固化视图来构建生产级别应用。第一句话就已经推翻了胶水的概念了。我们了解这句话的几个关键字。quicklyminimalopinionated viewquickly,有多快呢? Get started in seconds using Spring Initializr。好吧,几秒钟内就可以构建一个应用程序。最小化配置和固化视图,这个需要我们在后期慢慢体现。


我们可以再访问下官方的具体文档,这份文档提供了HTML,PDF,EPUB三种格式下载,国内的好多书籍都是根据这份文档撰写的。其中第8点就是Introducing Spring Boot。


Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

You can use Spring Boot to create Java applications that can be started by using java -jar or more traditional war deployments. We also provide a command line tool that runs “spring scripts”.

Our primary goals are:

Provide a radically faster and widely accessible getting-started experience for all Spring development.
Be opinionated out of the box but get out of the way quickly as requirements start to diverge from the defaults.
Provide a range of non-functional features that are common to large classes of projects (such as embedded servers, security, metrics, health checks, and externalized configuration).
Absolutely no code generation and no requirement for XML configuration.

这段介绍了Spring Boot 可以轻松创建一个可运行的,独立的,生产级别的Spring 应用程序。我们使用固化视图(固有的观点)来整合Spring*台和第三方jar包,这样你就可以轻松上手了。大部分Spring Boot 应用只需要很少的配置。它提供了使用java -jar的形式启动和传统的war包形式启动,也提供了Spring脚本命令行的形式来启动应用程序。Spring Boot 的目的是:


给所有的Spring 开发者提供一个更快和更广泛的入门上手体验开箱即用,但是也提供了一个快速解决的方案当需求偏离默认值的情况为一些大型项目(如嵌入式服务器,安全性,度量标准,运行状况检查和外部配置)提供一系列非功能性的解决方案绝对没有代码生成且不需要的XML配置。
Quick Start

在开始撸代码前,我们先看下Spring对环境的配置要求。


    Maven 3.3+ 或者 Gradle 4.4+Java8 及以上
    这里我采用的是Maven 3.5 和jdk 1.8.0_141,输入mvn -v 指令即可查看maven版本,至于Java版本,使用java -version即可查看。

    Spring 提供了很多种办法创建项目,这里我们总结出两类创建项目的方法。

命令行形式创建 Command-Line
我们采用Maven Archetype插件去生成项目,命令如下:

mvn archetype:generate -DgroupId=com.zwq -DartifactId=first-spring-boot-application -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false -Dpackage=com.zwq

解释下这个命令:
* mvn maven 指令
* archetype 插件maven-archetype-plugin简称
* archetype:generate 插件的目标
* -D 加入参数 如groupId,artifactId,version三大属性即GAV
这个时候我们生成了一个maven的项目,项目结构如下

first-spring-boot-application
│ pom.xml

└─src
├─main
│ └─java
│ └─com
│ └─zwq
│ App.java

└─test
└─java
└─com
└─zwq
AppTest.java


windows 下面列出文件目录的指令时tree,将文件和目录一起列出是tree /f ,输出到文件中使用tree /f > list.txt


这个时候创建的项目还不是Spring Boot项目,我们需要添加相关的依赖,官方文档有相关的案例,这里我直接贴出来


org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE





org.springframework.boot
spring-boot-starter-web







org.springframework.boot
spring-boot-maven-plugin



再根据官方文档,修改我们的启动类App.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
/**
* Hello world!
*
*/
@RestController
@EnableAutoConfiguration
public class App
{
@RequestMapping("/")
String home() {
return "Hello World!";
}


public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}

再执行脚本mvn spring-boot:run 等启动成功后访问地址,得到如下结果,项目构建完毕
(是不是几秒就好了?)

图形化界面
Spring 官方提供了一种更为高效的可视化构建方式(就上述只添加spring-boot-starter-web依赖而言,感觉命令行更快)。访问地址快速启动

我们添加上spring-boot-starter-web依赖,点击生成项目按钮,即会下载一个Spring Boot 项目,直接执行mvn spring:run 就可以运行,是不是更方便和直观。


打包

Spring官方文档反复提到了 Executable Jar,也称fat jars。即可执行jar文件。那么如何创建一个fat jar 呢?Spring 的官方文档解释过,如果使用了spring-boot-starter-parent作为的话,只需要在pom.xml中添加以下代码





org.springframework.boot
spring-boot-maven-plugin




然后执行 mvn package 就可以生成一个fat jar了。
如果不采取的形式创建Spring Boot 项目,创建方式如下





<!– Import dependency management from Spring Boot –>
org.springframework.boot
spring-boot-dependencies
2.1.4.RELEASE
pom
import





org.springframework.boot
spring-boot-starter-web
2.1.4.RELEASE



这种方式,官方对spring-boot-maven-plugin 进行了补充,具体代码如下





org.springframework.boot
spring-boot-maven-plugin
2.1.4.RELEASE



repackage







生成jar 包后,我们可以采用java -jar的形式启动,这个jar包就可以直接放在生产环境执行,这就是Spring Boot快速启动生产级别应用。


尾声

本章节简述了Spring Boot的目的和初级应用,通过这些看起来很简单的操作,我们对Spring Boot 进行了一个大概的了解和快速入门,路漫漫其修远兮,吾将上下而求索。学*的过程是枯燥无味的,我们需要一步一个脚印,迈步前进。


相关推荐

最新更新

猜你喜欢