一、什么是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入门程序就完成了!