一、什么是SpringBoot

SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品。

SpringBoot使项目的配置不再复杂依赖管理不再混乱

Spring Boot 主要特征是:

  • 创建独立的spring应用程序

  • 直接内嵌tomcat、jetty和undertow(不需要打包成war包部署)

  • 提供了固定化的“starter”配置,以简化构建配置

  • 尽可能的自动配置spring和第三方库

  • 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等

  • 绝对不会生成代码,并且不需要XML配置

总之,Spring Boot为所有 Spring 的开发者提供一个开箱即用的、非常快速的、广泛接受的入门体验

更多细节,大家可以去官网查看。

 

二、Spring快速入门

我这里用的是Spring Boot 2.0.2.RELEASE
要求环境 Java8或Java9,Maven 3.2  及以上
Tomcat8.5(不过它内置Tomcat,直接用就行,不用我们去管。)
 

先创建两个空文件夹,一个用来放demo和项目的所有代码,一个用来放相关工具。


 

 

然后创建一个空的工程。

 

 

将工程放到刚刚创建的code文件夹里,起名为demo。

 

添加一个Module

 

选择 Maven




 

 

然后选择刚刚创建的项目

 

至此,我们创建好了一个maven工程。

 

我们配置一下pom.xml文件



代码如下:

<!-- 所有的springboot的工程都以spring父工程为父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>

    <dependencies>
        <!-- 启动器:每一个启动器背后都是一堆的依赖-->
        <!-- web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

之后我们可以看到相关web的依赖都被自动导入了
如下图

 

接下来我们来写一个SpringMVC的程序
在以前,我们写一个SpringMVC程序,要先配置一个web.xml ,而现在却不需要了,它已经自动配置好了。
现在,我们只需写一个controller就行了。

创建一个类。 

 

 

编写这个类

 

接下来如何访问呢?既然是内置tomcat,我们只需要写个main方法去访问。

 

代码如下:

@RestController
@RequestMapping("hello")
@EnableAutoConfiguration //启用自动配置
public class controller {

    @GetMapping("show")
    public String test(){
        return "hello springboot !";
    }

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

如何就可以启动了。

启动成功后,如下图显示。 (端口默认是8080,后面还会学到怎么改默认配置)

然后我们去访问 http://localhost:8080/hello/show 

访问成功了,显示也成功了。
至此,我们就完成了一个简单的web程序了。
是不是比以前方便简单快捷了很多!
 

三、优化入门程序

想一下,如果将controller再复制一份,取名为controller2。
如下图:

这个时候两个里面都有main方法,但是我们无法同时启动,因为只有一个8080端口。
所以我们应该能想到,这个main应该是个全局的,作用于所有的controller,而不应该放在一个controller里面。
同理,@EnableAutoConfiguration //启用自动配置, 多个controller应该也只用启用一次。所以也应该抽取出来。

我们把controller和controller2中的 启用启动配置 和 main 方法 都拿出来。
如下图:(开始忘记建个包专门用于存放controller了,现在新建一个controller包。开始的两个controller,选定,剪切进去就可以。)


 

拿出来的 启用自动注解 和 main 方法, 我们应该放哪里呢?
这两个肯定是要能扫描所有的包,所以应该放在基包下。
这里我们放在springboot下,和controller这个包同一级。
如下图:

 

将拿出来的 启用自动注解 和 main 方法 放到这个类里面。

@EnableAutoConfiguration //启用springboot的自动配置
public class TestApplication {

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

不过这个时候还不够,因为我们把它拿出来了,它不知道该对谁起作用了。
所以,我们要加一个@ComponentScan,告诉它一下。
如下图

 


@EnableAutoConfiguration //启用springboot的自动配置
@ComponentScan //类似于<context:component-scan base-package="">
//可以指定特定包,默认扫描该类所在包以及子子孙孙包。
public class TestApplication {

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

然后启动这个main方法。
分别访问 http://localhost:8080/hello2/show 和 http://localhost:8080/hello/show


成功了!

通常,我们把这个 存放自动配置和main方法等 的类叫做 引导类 ,它是 springboot应用的入口
(在我们的入门程序里,也就是 TestApplication 这个类)。

其实引导类里的那两个注解,可以用一个@SpringBootApplication 注解来代替  (了解一下就可以)
( @SpringBootApplication 是组合注解 ,相当于 @EnableAutoConfiguration @ComponentScan @SpringBootConfiguration 这三个注解 )
如下图:


运行一下,你会发现,效果是一样的!

那么,我们的SpringBoot入门程序就完成了!