SpringBoot概述
Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作。基本上讲,这意味着您只需极少的配置,就可以快速获得一个正常运行的 Spring 应用程序。这些极少的配置采用了注解的形式,所以没有 XML。
SpringBoot工作原理
首先SpringBoot拥有较为合理的默认值,他通过自动配置的方式,使一些常用的配置自动完成,通过其自动配置的方式可快速构建应用程序。例如,我们常用的Tomcat容器,SpringBoot提供一个内嵌的Tomcat容器,我们无需再担心手动搭建Tomcat服务器的具体细节。其次,我们可通过自定义配置的方式,显示地更改我们所需要的配置,如可通过Maven的POM文件,更改其依赖项来更改我们的配置细节。
使用SpringBoot
Starter
starter 是 Spring Boot 的一个重要组成部分,用于限制您需要执行的手动配置依赖项数量。要想有效地使用 Spring Boot,您应该了解 starter。
starter 实际上是一组依赖项(比如 Maven POM),这些依赖项是 starter 所表示的应用程序类型所独有的。
所有 starter 都使用以下命名约定:spring-boot-starter-XYZ,其中 XYZ 是想要构建的应用程序类型。以下是一些流行的 Spring Boot starter:
spring-boot-starter-web 用于构建 RESTful Web 服务,它使用 Spring MVC 和 Tomcat 作为嵌入式应用程序容器。
spring-boot-starter-jersey 是 spring-boot-starter-web 的一个替代,它使用 Apache Jersey 而不是 Spring MVC。
spring-boot-starter-jdbc 用于建立 JDBC 连接池。它基于 Tomcat 的 JDBC 连接池实现。
Spring Boot starter 参考页面 还列出了其他许多 starter。您可以访问该页面来了解每个 starter 的 POM 和依赖项。
自动配置
一般情况下,Spring Boot 会使用其 @EnableAutoConfiguration 注释自动配置您的应用程序。自动配置基于类路径中的 JAR 和定义 bean 的方式:
查看配置:使用 --debug 选项启动您的 Spring Boot 应用程序,然后将向控制台生成一个自动配置报告。
Spring Boot 使用您在 CLASSPATH 中指定的 JAR,形成一个有关如何配置某个自动行为的观点。例如,如果类路径中有 H2 数据库 JAR,而且您没有配置任何其他 DataSource bean,您的应用程序会自动配置一个内存型数据库。
Spring Boot 使用您定义 bean 的方式来确定如何自动配置自身。例如,如果您为 JPA bean 添加了 @Entity 注释,Spring Boot 会自动配置 JPA,这样您就不需要 persistence.xml 文件。
创建SpringBoot项目
POM文件
例如:
<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>com.makotojava.learn</groupId>
<artifactId>HelloSpringBoot</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HelloSpringBoot</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
第 10 至 14 行显示了 元素,它指定了 Spring Boot 父 POM,并包含常见组件的定义。您不需要手动配置这些组件。
第 16 至 19 行显示了 spring-boot-starter-web Spring Boot starter 上的 。它们告诉 Spring Boot,该应用程序是 Web 应用程序。Spring Boot 会相应地形成自己的观点。
第 25 至 30 行 告诉 Maven 使用 spring-boot-maven-plugin 插件生成该 Spring Boot 应用程序。
配置不是太多,对吧?请注意,这里没有 XML。我们使用 Java 注释完成剩余配置。
SpringBoot如何形成观点
Spring Boot 的观点基于 POM 的内容,包括您在初步配置应用程序时指定的 Spring Boot starter。形成有关想要构建的应用程序类型的观点后,Spring Boot 会提供一组 Maven 依赖项。例如我们创建Web项目,我们在Maven中引入spring-boot-starter-web Spring Boot starter 上的 ,那么基于这个starter,SpringBoot会形成以下观点,即自动配置思路。
- 使用 Tomcat 作为嵌入式 Web 服务器容器
- 使用 Hibernate 进行对象-关系映射 (ORM)
- 使用 Apache Jackson 绑定 JSON
- 使用 Spring MVC 作为 REST 框架
以上是最流行的Web应用程序的默认设置,一般情况下使用以上配置足够,当然,我们可以自定义配置来覆盖自动配置从而使用不同的技术。
自定义配置的方法可见我的另一篇博客 SpringBoot自定义配置
例如您并不想使用Tomcat,而想使用Jetty,那么只要在starter-web的依赖项中添加如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
Maven中许多优秀的功能在中引入,当然可以选择不使用,但需要在Maven插件中加入repackage语句如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.2.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
构建可执行程序
构建可执行Jar
- 在IDE中进行Maven构建,点击clean、build即可。
- 命令行构建
运行可执行jar
要运行刚创建的可执行 JAR,请打开 Mac 终端窗口或 Windows 命令提示,导航到 HelloSpringBoot 项目文件夹,然后执行:
java -jar target/HelloSpringBoot-1.0-SNAPSHOT.jar
其中 target 是构建的默认输出目录。如果为它配置了不同的目录,请在上面的命令中进行相应的替换。
Spring Boot 的输出包含一个文本式 “启动屏幕”(可手动进行替换如图)
如上一个简易的SpringBoot便已经创建并执行成功了。