美文网首页我不想再做Java小白了
大清朝早亡了,还没有入门 Spring Boot?

大清朝早亡了,还没有入门 Spring Boot?

作者: 沉默王二 | 来源:发表于2020-05-22 13:23 被阅读0次

    由于读者的数量越来越多,难免会被问到一些我自己都觉得不好意思的问题,比如说前几天小王就问我:“二哥,快教教我,怎么通过 Spring Boot 创建一个 Hello World 项目啊?”

    收到问题的时候,我都惊呆了!什么年头了,还不会用 Spring Boot,大清朝早亡了啊!

    没等我发牢骚,小王就紧接着说:“二哥,你先别生气,我投了 14 份简历才在三线小镇的一家小公司找到一份实习工作,不容易啊,领导给我安排了一个小活儿,就是搭一个 Spring Boot 的小项目,估计是测试我的实战能力吧。听说二哥热肠古道,我就抱着试一试的心态添加了你的好友。”

    话说到这份上,我的气自然也就消了。随后,我花了五分钟的时间帮他解决了苦恼,没成想,他还发给我了一个小红包,表示对我的感谢。并建议我写一篇文章出来,因为他觉得像他这样的小白还有很多。期初我是有些犹豫的,毕竟网上写 Spring Boot 的文章已经很多了,况且还是“Hello World”,写出来会不会遭人喷啊。但转念一想,哪怕只有一个读者需要也是我们作者应尽的义务啊。于是就有了大家看到的这篇文章。

    00、Spring Boot 简介

    我猜,大家一定编写过基于 Spring 的应用程序,你就知道一个“Hello World”就需要大量的配置。想一想,我自己都有点怀疑,还能不能创建的出来,尤其是那些 XML 文件,完全敲不出来。

    Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您从一开始只会遇到极少的麻烦。

    看看 Spring Boot 官网对自己的“王婆卖瓜自卖自夸”,感觉确实优秀啊。这意味着我们只需极少的配置,就可以快速创建一个可以正常运行的 Spring 应用程序。而且这些极少的配置采用的是注解的方式,没有 XML。

    总之呢,Spring Boot 是一个轻量级的框架,可以完成基于 Spring 的应用程序的大部分配置工作。

    01、使用 Spring Initlallzr 创建 Spring Boot 项目

    创建一个 Spring Boot 项目非常简单,通过 Spring Initlallzr(https://start.spring.io/)就可以了。(实际上,我也只是把这个网址扔给了小王。)

    1)第一个选项一般选择 Maven(Java 后端项目首选),Gradle 在安卓项目中用的比较多。如果还不太了解 Maven,请查看我以前写的一篇文章:Maven 入门

    2)第二个选项一般选择 Java。

    3)第三个选项默认为 2.2.2,Spring Boot 目前最稳定的版本。

    4)第四个选项填上项目的路径和名称。

    5)第五个选项,我们选择 Spring Web 和 Spring Boot Actuator,表明该项目是一个 Web 项目;Actuator 是 Spring Boot 提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。

    选项选择完后,就可以点击【Generate】按钮生成一个初始化的 Spring Boot 项目了。生成的是一个压缩包,导入到 IDE 的时候需要先解压。

    02、把 Spring Boot 项目导入 IDEA

    最近迷上了 IDEA,所以暂时就不再使用 Eclipse 了。如果实在是不习惯 IDEA,可以选择 Spring 自己的 IDE——STS,基于 Eclipse 的。

    PS:导入的过程就省略了,请选择 Maven 就对了。

    等待 Maven 把所有的依赖包下载完。

    项目的目录结构图如下所示。

    1)HelloSpringBootApplication 为项目的入口,带有 main() 方法。我们知道,传统的 Web 项目通常需要放到 Tomcat 等容器下面启动运行,而 main() 方法则预示着该项目可以作为一个 jar 包直接运行——因为 Spring Boot 已经内置了 Tomcat。

    2)大家一定对 @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}
    )}
    )
    

    从这些注解中,我们大致可以窥探出,Spring Boot 项目使用了大量的注解取代了以往繁琐的 xml 配置。

    03、编辑 Spring Boot 项目

    来看下面这段代码。

    @SpringBootApplication
    @RestController
    public class HelloSpringBootApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(HelloSpringBootApplication.class, args);
        }
    
        @RequestMapping("hello")
        public String hello() {
            return "Hello World";
        }
    }
    

    1)@RestController 注解相当于 @ResponseBody@Controller,意味着请求返回的对象可以直接以 JSON 的格式回显。

    2)hello() 方法非常简单,返回一个字符串“Hello World”。@RequestMapping 表明这个方法是一个请求映射。

    04、运行 Spring Boot 项目

    接下来,我们直接运行 HelloSpringBootApplication 类,这样一个 Spring Boot 项目就启动成功了。

    默认端口为 8080。

    这时候,可以直接在 IDEA 的 Terminal 面板中测试该项目是否启动成功。

    命令行为 curl http://localhost:8080/hello。之所以不需要项目路径 helloSpringBoot,是因为默认启动的时候相当于是一个 ROOT 级别的,所以不需要根目录。

    curl 是一个常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)和 URL 的合体。curl 的功能非常强大,命令行参数多达几十种。如果运用熟练的话,完全可以取代 Postman。

    05、jar 形式运行 Spring Boot 项目

    打开 pom.xml,我们可以看到如下内容:

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

    这意味着我们可以通过 maven 命令 mvn clean package 将 Spring Boot 项目打包成 jar 文件。

    也可以加上参数用于跳过打包时候的测试:mvn clean package -Dmaven.test.skip

    稍等片刻,就可以在 target 目录下看到对应的 jar 包。该 jar 包比起传统的 war 包更具有优势,因为不需要再单独开一个容器来跑项目了,Spring Boot 内置过了。原生的 jar 文件(.jar.original)只有不到 3 kb,非常小,因为没几行代码,但打包后 .jar 文件有 19 M,这说明 Spring Boot 帮我们做了很多肉眼看不到的工作。

    直接使用 java -jar helloSpringBoot-0.0.1-SNAPSHOT.jar 命令运行该 jar 包,同样可以看到 Tomcat 的启动信息。

    这次,我们使用浏览器来访问一下。

    也是 OK 的,这说明我们的第一个 Spring Boot 程序跑起来了。快给自己点个赞。

    06、鸣谢

    好了,亲爱的读者朋友们,答应小王的文章终于写完了。能看到这里的都是最优秀的程序员,升职加薪就是你了👍。本文配套的源码已上传至 GitHub 【SpringBootDemo.helloSpringBoot】。

    相关文章

      网友评论

        本文标题:大清朝早亡了,还没有入门 Spring Boot?

        本文链接:https://www.haomeiwen.com/subject/sivxoctx.html