SpringBoot 初步

SpringBoot 是构建在 SpringMVC 基础上的新一代 Web 开发框架。相比 SpringMVC,SpringBoot 的配置更简单,上手更容易,因此受到了开发者们的欢迎。下面我们将在前面内容的基础上,学习使用 SpringBoot。

首先我们在 pom 中加入对于 SpringBoot 的依赖:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.5.3.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <!-- ... -->
  12. </dependencies>

然后创建一个新的 SpringBoot 应用:

  1. @SpringBootApplication
  2. public class MySpringBootApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(applicationClass, args);
  5. }
  6. private static Class<MySpringBootApplication> applicationClass = MySpringBootApplication.class;
  7. }

在 IDEA 中加入 MySpringBootApplication 的启动配置。如果之前的工程代码还在,这时候运行程序,我们会发现可以通过 http://localhost:8080/hello 访问到我们的网页了,同时前面写 Rest 服务也可以正常工作!

这是怎么回事呢?原来 SpringBoot 内置了一个 Tomcat 服务器,也就是内嵌了一个 Servlet Container,因此直接运行工程就可以看到效果,不需要再进行额外的部署,也无需进行 Servlet 的有关配置。同时 SpringBoot 还会帮我们做许多配置工作。通过 @SpringBootApplication 这个 Annotation,它会帮我们打开 @EnableWebMvc,以及 @ComponentScan 功能,这意味着 SpringBoot 会和 SpringMvc 找到同一个 package 下的 @Controller@Configuration 等类,进行自动配置。

如果我们想使用例如 Tomcat 之类的 Servlet 容器呢?SpringBoot 也可以很方便地做到这一点,只需要继承 SpringBootServletInitializer,整个应用就具备了部署到 Servlet Container 的能力:

  1. @SpringBootApplication
  2. public class MySpringBootApplication extends SpringBootServletInitializer {
  3. public static void main(String[] args) {
  4. SpringApplication.run(applicationClass, args);
  5. }
  6. @Override
  7. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  8. return application.sources(applicationClass);
  9. }
  10. private static Class<MySpringBootApplication> applicationClass = MySpringBootApplication.class;
  11. }