SpringBoot的初入门(一)

简介: SpringBoot的初入门1. 讲解了SpringBoot创建的两种方式2. 编写SpringBoot的小入门案例3. SpringBoot的启动顺序4. java -jar 运行程序
二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。

一. SpringBoot 为什么出现?

一.一 传统 Spring的开发的缺点

Spring 是一栈式开发框架,简化了JavaEE的开发。 但是随着业务更加复杂,导致配置文件越来越多,越来越复杂,脱离了Spring最开始出现的初心。

主要有两个缺点:

  1. 大量的配置文件,难以维护。
  2. 与第三方框架整合时较复杂。

所以,SpringBoot 就在 Spring的基础上应用而生了。

一.二 SpringBoot的出现

SpringBoot是在Spring的基础上进行扩充的,采用 Java Bean的方式进行配置文件,与第三方框架整合时,也非常容易。

一.二.一 使编码变得简单

采用注解方式,进行配置,简化了很多编码。

一.二.二 使配置变得简单

自动配置,快速集成第三方框架

一.二.三 使部署变得简单

内置Tomcat服务器,可添加Jetty 等容器。

一.二.四 使监控变得简单

自带项目监控。

二. SpringBoot框架的入门

老蝴蝶采用的是 JDK 1.8, Maven 3.6, Idea 工具。

创建项目时,可以通过 网址方式创建,也可以通过 maven 方式创建。

二.一 Idea 通过官方网址创建SpringBoot 项目

二.一.一 创建 HelloWorld 项目

打开 Idea, File --->new --->Project

在这里插入图片描述

选中 Spring Initializr 选项, SDK 选择1.8 方式。

在这里插入图片描述

Type 选择 Maven 类型, Java version 选择 8 版本。

在这里插入图片描述

依赖目前只选择一个 Spring Web 依赖。 SpringBoot 版本号选择 2.4.4 版本。(老蝴蝶为了记念前公司大方,均采用前公司版本号,2.2.2. 后不做声明)

在这里插入图片描述

填入项目名称和存储的位置,点击 Finish 即可。

在这里插入图片描述

点击完成之后,会通过Maven 进行下载相应的依赖 jar包。

二.一.二 创建Hello World 项目结构

二.一.二.一 目录结构

在这里插入图片描述

  • LearnApplication 是 SpringBoot 的启动类.
  • resources 下面的 static 会放置静态的资源。
  • resoruces 下面的 templates 会放置模板.
  • application.properties 会放置配置文件。
  • test下面的 LearnApplicationTests 是测试启动类。
  • pom.xml 会放置一些依赖。

二.一.二.二 自动生成文件

  1. 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <!--//1-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.yueshushu</groupId>
    <artifactId>learn</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>learn</name>
    <description>两个蝴蝶飞学习SpringBoot入门程序</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--//2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--//3 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <!--//4 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  1. 引入了一个父工程,是 spring-boot-starter-parent , 这个名称一定要记住。
  2. 引入了一个 spring-boot-starter-web 的依赖。
  3. 引入了一个 spring-boot-starter-test 的测试。
  4. 添加了打包插件

2 . LearnApplication

注意图标

在这里插入图片描述

package org.yueshushu.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//1.
@SpringBootApplication
public class LearnApplication {

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

}
  1. 添加 SpringBootApplication注解,表示这是一个SpringBoot 项目
  2. SpringApplication 通过main() 方法启动项目。

3 . test包下的 LearnApplicationTests

package org.yueshushu.learn;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
//1
@SpringBootTest
class LearnApplicationTests {

    @Test
    void contextLoads() {
    }

}
  1. 添加 SpringBootTest 测试注解,表示这是一个SpringBoot的测试类。

4 static,templates,application.properties 文件下,均没有内容。

注意 application.properties 文件前面的图标。

在这里插入图片描述

二.一.二.三 添加 的jar包依赖

在这里插入图片描述

只添加了一个 spring-boot-starter-web 的依赖,就相互引入了

在这里插入图片描述

在这里插入图片描述

这么多依赖, 有日志的,有json的,有spring的,有测试的。 注意,没有数据库相关的噢。

二.一.二.四 启动项目

找到 LearnApplication.java 文件,运行main() 方法即可。
在这里插入图片描述

运行测试方法的话, 找到LearnApplicationTests.java, 运行 contextLoads() 方法。

package org.yueshushu.learn;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class LearnApplicationTests {

    @Test
    void contextLoads() {
      //添加一句输出  
        System.out.println("谢谢你,我是两个蝴蝶飞");
    }

}

image-20210409204328613

二.二 通过 Maven 形式创建SpringBoot 项目

二.二.一 创建 MavenHelloWorld 项目

File---->new---->Project

在这里插入图片描述

选择 Maven 选项, ProjectSDK 选择 1.8 样式。

在这里插入图片描述

填写项目名和 项目坐标信息。

在这里插入图片描述

二.二.二 创建 MavenHelloWorld项目结构

在这里插入图片描述

什么都没有,没有依赖,没有启动类,只是一个简单的Maven 项目。

二.二.三 将普通Maven 项目变成一个 SpringBoot 项目

二.二.三.一 在 pom.xml 配置文件中添加 依赖

这儿直接将 HelloWorld 里面的 pom.xml 放置到 MavenHelloWorld 里面。父工程的版本号,变成 2.2.2.RELEASE

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!--以后均改成 2.2.2.RELEASE 版本-->
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.yueshushu</groupId>
    <artifactId>learn</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>learn</name>
    <description>两个蝴蝶飞学习SpringBoot入门程序</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

添加完成之后,会发现 MavenHelloWorld 项目引入了大量的依赖。

二.二.三.二 在resources 里面添加配置

与 HelloWorld 项目一样,添加 static,templates,application.properties 配置。

在这里插入图片描述

二.二.三.三 添加启动类 HelloApplication

package org.yueshushu.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @ClassName:HelloApplication
 * @Description 启动类
 * @Author 两个蝴蝶飞
 * @Date 2021/4/9 20:39
 * @Version 1.0
 **/
//1. 添加SpringBootApplication注解
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        //2. SpringApplication 类运行
        SpringApplication.run(HelloApplication.class,args);
        System.out.println("欢迎我,我是两个蝴蝶飞,我启动了!!!!");
    }
}

运行 HelloApplication 方法.

在这里插入图片描述

可以发现,运行成功了。

二.二.三.四 添加 测试类 HelloApplicationTests

放置在 test 目录 下

在这里插入图片描述

package org.yueshushu.learn;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class HelloApplicationTests {

    @Test
    void contextLoads() {

        System.out.println("谢谢你,我是MavenHelloWorld 部分的两个蝴蝶飞");
    }

}

点击 contextLoads() 方法进行测试
在这里插入图片描述

Idea 可以通过这两种方式,创建 SpringBoot项目。 推荐使用 Maven的方式。

三. SpringBoot版的 HelloWorld

开发中,都是使用的Web 方式开发。既然我们依赖,选择了 spring-boot-starter-web, 那么就开发一个简单的 Web 项目看看。

三.一 搭建一个简单的 SpringBoot 环境

具体方式可以看 第二章节部分。

采用的是 Idea 通过 Maven 方式 创建的那个 MavenHelloWorld 项目进行演示。

三.二 添加 Controller 层 url处理类

在这里插入图片描述

注意, controller层与 HelloApplication 同级。

@SpringBootApplication 注解,会扫描所在的包和子包。

如果将 HelloController 放置在 org.yueshushu.learn 包下,会扫描到。

如果 放置在 org.yueshushu 包下,不会扫描到。 org包下,也扫描不到。

package org.yueshushu.learn.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName:HelloController
 * @Description TODO
 * @Author 岳建立
 * @Date 2021/4/9 20:55
 * @Version 1.0
 **/
//1. 添加了一个RestController的注解

@RestController
public class HelloController {
    //2.请求地址是 /

    @GetMapping("/")
    public String toHello(){
        return "谢谢你来访问我,我是两个蝴蝶飞";
    }
    //3. 请示地址是  /info

    @GetMapping("/info")
    public String info(){
        return "我是两个蝴蝶飞,目前在杭州,我是一个快乐的程序员";
    }
}

三.三 启动 HelloApplication 类

启动 HelloApplication 类,运行main() 方法

"D:\Program Files\Java\jdk1.8.0_91\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain 
......
1.7.29.jar;G:\Jar_repository\org\springframework\spring-core\5.2.2.RELEASE\spring-core-5.2.2.RELEASE.jar;G:\Jar_repository\org\springframework\spring-jcl\5.2.2.RELEASE\spring-jcl-5.2.2.RELEASE.jar" org.yueshushu.learn.HelloApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)

2021-04-09 21:02:08.678  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : Starting HelloApplication on yuezl with PID 15952 (D:\githubBoot\springboot\MavenHelloWorld\target\classes started by 12905 in D:\githubBoot\springboot\MavenHelloWorld)
2021-04-09 21:02:08.680  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : No active profile set, falling back to default profiles: default
2021-04-09 21:02:09.191  INFO 15952 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-04-09 21:02:09.197  INFO 15952 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-04-09 21:02:09.197  INFO 15952 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2021-04-09 21:02:09.246  INFO 15952 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-04-09 21:02:09.246  INFO 15952 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 539 ms
2021-04-09 21:02:09.333  INFO 15952 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-04-09 21:02:09.429  INFO 15952 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-04-09 21:02:09.433  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : Started HelloApplication in 0.966 seconds (JVM running for 1.578)
欢迎我,我是两个蝴蝶飞,我启动了!!!!

控制台可以正常的打印输出

输入网址: http://localhost:8080/

在这里插入图片描述

http://localhost:8080/info

在这里插入图片描述

可以通过网址,正常的访问。

三.四 启动控制台打印的输出语句

//1.  启动的虚拟机位置,启动的参数,启动时依赖的jar包 和启动类
"D:\Program Files\Java\jdk1.8.0_91\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain 
......
1.7.29.jar;G:\Jar_repository\org\springframework\spring-core\5.2.2.RELEASE\spring-core-5.2.2.RELEASE.jar;G:\Jar_repository\org\springframework\spring-jcl\5.2.2.RELEASE\spring-jcl-5.2.2.RELEASE.jar" org.yueshushu.learn.HelloApplication
//2. 启动成功的图案。 显示 版本号。可以修改
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)
//3. 启动app
2021-04-09 21:02:08.678  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : Starting HelloApplication on yuezl with PID 15952 (D:\githubBoot\springboot\MavenHelloWorld\target\classes started by 12905 in D:\githubBoot\springboot\MavenHelloWorld)
//4. 找配置环境文件,可以选择的。没有的话,走默认
2021-04-09 21:02:08.680  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : No active profile set, falling back to default profiles: default
//5. 启动的服务器 tomcat初始化 和端口号 8080 
2021-04-09 21:02:09.191  INFO 15952 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
//6. 开启 tomcat 服务 
2021-04-09 21:02:09.197  INFO 15952 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
//7. 启动 Servlet 引擎
2021-04-09 21:02:09.197  INFO 15952 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
//8. 初始化 Spring 上下文
2021-04-09 21:02:09.246  INFO 15952 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
//9.初始化完成时间
2021-04-09 21:02:09.246  INFO 15952 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 539 ms
//10. 初始化服务任务
2021-04-09 21:02:09.333  INFO 15952 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
//11. tomcat 启动时的端口号和路径 path(目前为 空)
2021-04-09 21:02:09.429  INFO 15952 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
//12. 服务启动成功,启动的总时间 
2021-04-09 21:02:09.433  INFO 15952 --- [           main] org.yueshushu.learn.HelloApplication     : Started HelloApplication in 0.966 seconds (JVM running for 1.578)
欢迎我,我是两个蝴蝶飞,我启动了!!!!

三.五 打包并控制台方式运行

Terminal 控制台 进行安装

在这里插入图片描述

静静等待,直到运行成功。

在这里插入图片描述

查看磁盘目录,发现确实有这么一个jar包,时间上也是符合的.

在这里插入图片描述

通过 cmd 的 java -jar Xxx.jar 的方式进行运行程序。

D:\githubBoot\springboot\MavenHelloWorld\target>java -jar learn-0.0.1-SNAPSHOT.jar

在这里插入图片描述

浏览器访问时,可以正常的响应

在这里插入图片描述

关闭 cmd 窗口后,再次请求,就请求不到了。

在这里插入图片描述

本章节的代码放置在 github 上:

https://github.com/yuejianli/springboot/tree/main/MavenHelloWorld

谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
Java 测试技术 Spring
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
1599 1
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
|
XML Java 测试技术
SpringBoot入门篇 01、Springboot入门及配置(二)
SpringBoot入门篇 01、Springboot入门及配置(二)
|
XML Java 应用服务中间件
SpringBoot 快速入门(保姆级详细教程)
SpringBoot快速入门,保姆级别超详细,解决IDEA创建SpringBoot项目一直转圈圈。
612 0
SpringBoot 快速入门(保姆级详细教程)
|
存储 Java 测试技术
Idea工具中创建 SpringBoot工程及入门详解
Idea工具中创建 SpringBoot工程及入门详解
1357 4
Idea工具中创建 SpringBoot工程及入门详解
|
Java 关系型数据库 MySQL
MyBatis-Plus 入门 【SpringBoot版】
今天来带大家入门学习MyBatis-Plus,MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
|
druid Java 关系型数据库
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
494 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
|
JSON Java 应用服务中间件
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
175 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
|
Java 应用服务中间件 Maven
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
231 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
|
开发框架 负载均衡 前端开发
SpringBoot入门篇 01、Springboot入门及配置(一)
SpringBoot入门篇 01、Springboot入门及配置(一)
|
Java 应用服务中间件 数据库连接
springboot入门demo详解(解决跨域)
微服务自问世以来就一直很火。天天耳听Springboot,Springcloud,docker,这些名词,以前没学Springboot的时候刚学ssm的时候,,说实话头都炸了。单独一个个学习Spring,Springmvc,mybatis还能将就配置,记得当初把三个整合的时候可是费了好大的功夫,然后又将ssm转成idea的maven项目又转了一大圈,找了好久,n个bug才把ssm搭成功。
229 0
springboot入门demo详解(解决跨域)