什么是Spring Boot

Spring Boot是由Pivotal团队提供的基于Spring的全新框架,其设计目的是为了简化Spring应用的搭建和开发过程。该框架遵循“约定大于配置”原则,采用特定的方式进行配置,从而使开发者无需定义大量的XML配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。

Spring Boot并不重复造轮子,而且在原有Spring的框架基础上封装了一层,并且它集成了一些类库,用于简化开发。换句话说,Spring Boot就是一个大容器。

几张下面展示图产品了官网上提供的弹簧引导所集成的所有类库:

图片描述

图片描述

图片描述

Spring Boot官方推荐使用Maven或Gradle来构建项目,本教程采用Maven。

第一个Spring Boot项目
大多数教程都是以Hello World入门,本教程也不例外,接下来,我们就来搭建一个最简单的Spring Boot项目。

首先创建一个Maven工程,请看下图:

这里写图片描述

然后在pom.xml加入Spring Boot依赖:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

创建一个Controller类HelloController:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class HelloController {

@RequestMapping("hello")
String hello() {
return "Hello World!";
}

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

运行主方法,Spring Boot默认会启动自带的Tomcat容器,启动成功后,浏览器访问:http:// localhost:8080 / hello,则会看到下图:

这里写图片描述

我们可以注意到,没有写任何的配置文件,更没有显示的使用任何容器,它是如何启动程序的呢,具体原理我将在第3课中具体分析。

这里我们可以初步分析出,Spring Boot提供了默认的配置,在启动类里加入@SpringBootApplication注解,则这个类就是整个应用程序的启动类。

属性和yaml
Spring Boot整个应用程序只有一个配置文件,那就是.properties或.yml文件。但是,在前面的示例代码中,我们并没有看到该配置文件,那是因为Spring Boot对每个配置项都有默认值。当然,我们也可以添加配置文件,用以覆盖其默认值,这里以.properties文件为例,首先在资源下新建一个名为application.properties(注意:文件名必须是应用)的文件,键入内容为:

server.port=8081
server.servlet.context-path=/api

并且启动main方法,这时程序请求地址则变成了:http:// localhost:8081 / api / hello。

Spring Boot支持属性和yaml两种格式的文件,文件名分别对应application.properties和application.yml,下面贴出yaml文件格式供大家参考:

server:
    port: 8080
    servlet:
        context-path: /api

可以看出属性是以逗号隔开,而yaml则换行+ tab隔开,这里需要注意的是冒号后面必须空格,否则会报错.yaml文件格式更清晰,更易读,这里作者建议大家都采用yaml文件来配置。

本教程的所有配置均采用yaml文件。

打包,运行
Spring Boot打包分为war和jar两个格式,下面将分别演示如何构建这两种格式的启动包。

在pom.xml加入如下配置:

<packaging>war</packaging>
<build>
<finalName>index</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>

这个时候运行mvn包就会生成war包,然后放到Tomcat当中就能启动,但是我们单纯这样配置在Tomcat是不能成功运行的,会报错,需要通过编码指定Tomcat容器启动,修改HelloController类:

 @RestController
    @SpringBootApplication
    public class HelloController extends SpringBootServletInitializer{
    
    @RequestMapping("hello")
    String hello() {
    return "Hello World!";
    }
    
    public static void main(String[] args) {
    SpringApplication.run(HelloController.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(Application.class);
    }
    
    }

这时再打包放到Tomcat,启动就不会报错了。

接下来我们继续看如果达成jar包,在pom.xml加入如下配置:

<packaging>jar</packaging>
<build>
<finalName>api</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>com.lynn.yiyi.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

然后通过mvn package打包,最后通过java命令启动:

java -jar api.jar
这样,最简单的Spring Boot就完成了,但是对于一个大型项目,这是远远不够的,Spring Boot的详细操作可以参照官网。

下面展示一个最基础的企业级Spring Boot项目的结构:

这里写图片描述

其中,Application.java是程序的启动类,Startup.java是程序启动完成前执行的类,WebConfig.java是配置类,所有bean注入,配置,拦截器注入等都放在这个类里面。

以上实例只是最简单的Spring Boot项目入门实例,后面会深入研究Spring Boot。


taojin
41 声望4 粉丝

Java开发工程师