写在前面:半年工作经验的Java程序员一枚,奈何公司用的是自研的Web框架和RPC框架,本着good good study,day day up的精神和为以后发展的考虑觉得自己需要学点开源的东西,写的文章主要是自己的认识和踩过的坑,如果觉得我哪里写的不正确欢迎指教。

一.本文介绍

    首先在阅读这篇文章前我要先说一下学习Spring Boot需要的基础,首当其充需要有Java基础,倒是没必要精通,但起码要知道继承封装多态,或是equals和==有什么区别(==对于基本类型来说比较的是值,对于引用类型比较的是内存地址,两个相同的对象即使属性值都一样但内存地址可能也不是一样的;equals如果不重写的话和==是一样的,String、Integer等对equals进行了重写比较的也是值)。其次就是Maven了,Maven作为项目管理工具最主要是对项目依赖关系的管理,Maven出现之前一个Java项目需要把各种jar包放到项目中,这就会导致项目本身臃肿或者出现难以解决的版本冲突,Maven通过groupId、artifactId、version作为一个条件唯一确定一个需要的jar包。最后如果你用过Spring那是极好的了,因为Spring Boot本着"约束大于配置"的理念就是对Spring的进一步封装,没用过也没关系因为Spring Boot使用起来容易上手。

二.为什么使用Spring Boot

    JavaWeb项目的开发由最初的Servlet+Jsp到后来Spring的出现可谓是一大进步,但Spring复杂的配置同样让人头疼,Spring Boot主要依赖一个配置文件就可以完成Web项目启动,而且不需要依赖外部的Web容器或插件就可以运行,五分钟足够用Spring Boot写一个Hello World出来了。Spring Boot让开发人员不必把精力浪费在框架搭建上而是专注于业务的开发,我认为这是最大的一点好处,当然我觉得越简单的东西可能坑也越多,前面说过Spring Boot是基于“约束大于配置”,如果不遵循约束又不了解Spring Boot的底层实现就会出一些莫名其妙的问题,我已经踩过一些坑了。

三.开始第一个Spring Boot的Hello World

    我用的是IDEA作为开发工具,一般创建Spring Boot项目首先可以从官网直接下载模板使用,或者是IDEA的Spring initilalizr功能(这个需要fanqiang),不过我觉得没有这个必要,直接建一个Maven项目把Spring Boot相关的依赖加进去就好了。

    1.先新建一个Maven项目

    

    

    输入GroupId、ArtifactId后直接点Finish就好了

    2.我们要加入Spring Boot的相关依赖       

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.test</groupId>
    <artifactId>first</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- Spring Boot引入的依赖,提供了一些默认配置 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <!-- 支持Web需要引入的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

     只需要这两个依赖就能够支持最简单的Web功能,现在暂时还不用使用配置文件(以后连数据库或者支持输出日志到文件再使用)。整个demo如下:

   

package cn.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
         SpringApplication.run(DemoApplication.class, args);
    }
}
package cn.test.controller;

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

@RestController
public class TestController {

    @RequestMapping("/test")
    public String test(){
        return "Spring Boot Demo";
    }
}

    3.运行DemoApplication里的Main函数输出如下日志:

 

    使用了内置的Tomcat并启动了8080端口,访问http://localhost:8080/test效果如下:

    

    至此一个最简单的基于Spring Boot的demo已经完成了,说一下我遇到的坑点:

  1. DemoApplication作为Spring Boot的启动类必须放在某个包下否则会报错,并且Spring Boot会递归扫描DemoApplication所在包下的文件
  2. DemoApplication里的@SpringBootApplication是Spring Boot启动的关键注解必不可少
  3. TestController里的@RestController注解的作用有两个,首先是把TestController这个类里的标了@RequestMapping注解的方法暴露出去让你在地址栏里敲对应的URL能访问到,其次就是把返回的数据以字符串形式展示。
  4. @RequestMapping注解就是规定一个标识,并把标识与方法绑定

 四.总结

    到这里我们已经有一个基于Spring Boot的Web框架了,如果用过Spring的话可以看到实现同样的功能Spring Boot远比Spring要简单的多,这其中的关键第一个是spring-boot-starter-parent这个依赖,第二个是@SpringBootApplication这个启动注解,后续会把Spring Boot与Mybatis相结合实现简单的增删改查,与Swagger2相结合自动生成接口文档。

 

  


    

 

    

 

posted on 2019-01-13 16:19  blythe  阅读(273)  评论(0编辑  收藏  举报