SpringBoot简明教程之快速创建第一个SpringBoot应用

Spring Boot介绍

如果您编写过基于 Spring 的应用程序,就会知道Spring只是完成 “Hello, World” 就需要大量配置工作。Spring目前最大的问题就是:
1. 依赖太多了,而且要注意版本兼容
2. 配置复杂、繁琐
3. 部署和运行麻烦。
SpringBoot作为Spring家族的新成员,其设计⽬目的是⽤用来简化新 Spring 应⽤的初始搭建以及开发过程。SringBoot近乎是整个Spring技术栈的一个大整合,所以Spring所具有的的功能它基本都具备。SpringBoot的官网对它的介绍是:

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

大致意思是:“Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。Spring Boot 对Spring 平台和第三方库拥有合理的默认值,大多数Spring Boot应用程序只需要很少的Spring配置。”

同时,SpringBoot作为SpringCloud的基础,也是学习微服务(微服务:一种架构风格,每一个功能元素最终都是一个可独立替换和独立升级的软件单元,2014,martin fowler)的一个前提和基础。

Spring Boot具有以下的优点:

  • 创建独立的Spring应用程序
  • 方便对外输出各种形式的服务,如 REST API、WebSocket、Web等
  • 方便直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
  • 尽最大努力自动配置Spring和第三方库

前期准备:

为了方便大家的学习,这里介绍一下我的一些环境的约束,方便大家参考,避免不必要的错误:

  • jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “”1.8.0_172-ea”“
  • IntelliJIDEA2017:IntelliJ IDEA 2017.2 x64

快速创建第一个SpringBoot应用

如果您使⽤的也是 Idea 工具,可以按照如下操作进行:
(1)单击 File | New | Project… 命令,弹出新建项⽬目框。
(2)选择 Spring Initializr 选项,单击 Next 按钮。
这里写图片描述
(3)然后出现了需要配置内容的界面,填写相关内容后(Type为默认的Maven Project ,Language 为 JAVA,Packaging为JAR,java version 根据你的实际java版本选择即可,其他均为默认),单击 Next 按钮
这里需要说明的是:

  • Group:⼀般填写公司域名,⽐比如百度公司填 com.baidu,演⽰示使⽤用 com.example。
  • Artifact:可以理解为项⽬目的名称,可以根据实际情况来填,本次演⽰示填写 springboot-demo。

这里写图片描述

(4)Dependencies:用来添加我们项⽬目所依赖的Spring Boot组件,可以多选,本次选择Web
即可。
这里写图片描述

(5)我们创建成果的项目目录如下图所示,其中.mvn、mvnw、mvnw.cmd是暂时的用不到文件,我们可以暂时先删除
这里写图片描述

可以看出Spring Boot的项目结构为:

  • src/main/java:程序开发以及主程序⼊入⼝口
  • src/main/resources:配置⽂文件
    • static:保存所有的静态资源; js css images;
    • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
    • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
  • src/test/java:测试程序

(6)创建com.example包下创建controller目录,并编写HelloWorldController方

    package com.example.springbootdemo.controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**
    * @Author: REN
    * @Description:
    * @Date: Created in 21:28 2018/8/18
    */

    @RestController
    public class HelloWorldController {
        @RequestMapping("/hello")
        public String hello() {
            return "Hello World";
        }
    }

(7)直接运行主函数,并在浏览器中输入:http://localhost:8080/hello

Idea运行成功如图:
这里写图片描述

浏览器如图:
这里写图片描述

这样,我们就成功创建了我们的第一个Spring Boot应用。

HelloWorld解析

pom.xml文件

父级依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了同时也是Spring Boot的版本仲裁中心;以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

启动依赖

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

Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。例如我们创建的是web应用,那么我们的依赖模块就是:spring-boot-starter-web。

Spring Boot Maven插件

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

把项目打包成一个可执行的超级JAR包(uber-JAR),可以绕过java -jar来运行应用程序。

测试依赖

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
    </dependency>

测试模块,包括 JUnit、Hamcrest、Mockito。

应用程序入口类

Main函数

    package com.example.springbootdemo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    /**
    * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
    */
    @SpringBootApplication
    public class SpringbootDemoApplication {

        public static void main(String[] args) {
            //让Spring Boot运行起来
            SpringApplication.run(SpringbootDemoApplication.class, args);
        }
    }

@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就运行这个类的main方法来启动SpringBoot应用;

简析@SpringBootApplication

我们点进去查看源码可看到 @SpringBootApplication又依赖于下面的依赖:

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(
        excludeFilters = {@Filter(
            type = FilterType.CUSTOM,
            classes = {TypeExcludeFilter.class}
        ), @Filter(
            type = FilterType.CUSTOM,
            classes = {AutoConfigurationExcludeFilter.class}
        )}
    )
    public @interface SpringBootApplication {
  • @SpringBootConfiguration:Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类
  • @EnableAutoConfiguration:开启自动配置功能;以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
  • @ComponentScan:指明对象扫描范围,默认指扫描当前启动类所在的包里的对象,如果当前启动类没有包,则在启动时会报错:

Controller类

    package com.example.springbootdemo.controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**
    * @Author: REN
    * @Description:
    * @Date: Created in 21:28 2018/8/18
    */

    @RestController
    public class HelloWorldController {
        @RequestMapping("/hello")
        public String hello() {
            return "Hello World";
        }
    }

@RestController:controller⾥面的方法都以json格式输出,如果是@Controller就代表着输出为页面内容。@RestController注解等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。

Spring Boot应用启动的三种方式

一、直接运行Main函数

这种方式就是我们在上面构建第一个Spring Boot应用时使用的方式:

这里写图片描述

二、使用命令 mvn spring-boot:run

在Idea执行该命令的方法:
这里写图片描述

双击即可执行该命令。

三、使用命令 java -jar xxxx.jar

首先,我们使用 mvn package将程序打包成JAR包
这里写图片描述
然后我们进入到我们项目的target文件夹下找到我们刚打好的Jar包,进入cmd
这里写图片描述
最后在命令行中执行命令,即可成功运行
这里写图片描述

错误解决方案:

1.如果启动时提示包冲突,请检查你的JDK中是否有以下tomcat包的出现:
如果有,建议先移出再尝试启动。
这里写图片描述

2.如果提示缺少包,则将Tomcat下的servlet-api.jar复制到JDK下即可

以上错误的包括但不限于以上的解决方案,还是以实际运行过程中的问题为准。

总结

使用Spring Boot很容易创建一个独立运行、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。作为今天的初识,我们只需要了解以下两点即可:

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 掌握三种Spring Boot应用的启动方式

源码下载

点击下载

特别说明:

参考文献:

尚硅谷,SpringBoot核心技术篇

纯洁的微笑,快速学习 Spring Boot 技术栈

转载说明: 支持转载,但请保留原作者,原文链接,微信公众号二维码

这里写图片描述
扫码关注作者个人技术公众号,不定期将有学习资源分享

猜你喜欢

转载自blog.csdn.net/m0_37888031/article/details/81807433