首页 > 编程笔记

Spring Boot简介

Spring 框架从诞生以来就是一款非常优秀的框架,随着其发展,几乎集成了各种第三方中间件。当开发一个大型的企业应用项目时,需要很多配置文件,此时集成第三方工具包时变得非常麻烦,这也是 Spring 框架被吐槽最多的一点。

Pivotal 公司也意识到了 Spring 框架的这些问题,所以启动了 Spring Boot 的开发,目的是减少开发过程中的配置,而且还可以生成各种 Starter 工具包,以方便集成第三方工具包。基于这两个方面的改进,使得 Spring Boot 迅速流行起来。

Spring Boot的特性

在采用 Spring MVC 框架实现一个后端接口服务应用时,需要依赖 spring-web、spring-context、spring-beans、spring-aop、spring-aspects、spring-core 和 spring-webmvc 等相关模块,同时还需要声明 web.xml、dispatcher-servlet.xml 等配置文件。

完成以上操作之后,还需要将其部署到 Tomcat 服务器上。如果使用 Spring Boot 框架进行开发,会让一切变得非常简单,只需要依赖一个 spring-boot-starter-web 即可完成。

Spring Boot 不是对 Spring 框架功能上的增强,而是提供了一种快速使用 Spring 的方式。Spring Boot 的主要特性如下:

快速创建Spring Boot应用

创建 Spring Boot 应用有多种方式,如将 Spring Tool Suite 插件集成到 Eclipse 等开发工具中,也可以下载安装 Spring Boot CLI 执行脚本,或使用Spring Initializr 工具等。

下面使用 Spring 官网提供的 Spring Initializr 工具初始化一个 Spring Boot 工程,步骤如下:

(1)登录 Spring 官网 https://start.spring.io/,在 Project 下选择 Maven Project 选项,在 Language 下选择 Java 选项,在 Spring Boot 下选择 2.3.3 选项,然后在 Project Metadata 栏中依次设置 Group、Artifact、Name、Description、Package name、Packaging、Java 等信息,如图 1 所示。

图1 使用Spring Initializr工具构建Spring Boot工程
图1 使用Spring Initializr工具构建Spring Boot工程

(2)设置完成后单击右侧的 ADD DEPENDENCIES…CTRL+B 按钮,添加 Spring Web 依赖包,如图 2 所示。

图2 添加Spring Web依赖包
图2 添加Spring Web依赖包

(3)单击 GENERATE CTRL+047-3 按钮,即可完成项目的下载,如图 3 所示。
图3 生成项目图3 生成项目

(4)解压 spring-boot-example.zip 包,导入开发工具,然后新建 HiController 类,代码如下:
@RestController
@RequestMapping("/hi")
public class HiController {
    @GetMapping("/springBoot")
    public String hi(){
        return "hi spring boot!";
    }
}
(5)直接运行 SpringBootExampleApplication 类。启动成功后,在浏览器中输入 http://localhost:8080/hi/springBoot,将显示“hi spring boot!”。这样,一个简单的 Spring Boot 应用便创建成功了。是不是特别简单?

Spring Boot Starter简介

上面我们新建了一个应用程序,只依赖 spring-boot-starter-web 包就可以开发出一个后端接口服务。

Spring Boot 提供了很多 Starter 用于自动依赖并进行版本控制的 JAR 包,而且 Spring Boot 在配置上相比 Spring 要简单许多,其核心在于只需要引入官方提供的 Starter 便可以直接使用,免去了各种复杂的配置。

Spring Boot 官方对 Starter项目的定义是有要求的,通常命名为 spring-boot-starter-{name},如 spring-boot-starter-web,对于非官方的 Starter 命名应遵守 {name}-spring-boot-starter 的格式。

下面通过一个具体的示例来演示创建一个 Starter 项目的过程。

(1)创建一个名为 biz-spring-boot-starter 的 MAVEN 工程,并且在 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.springboot.starter</groupId>
    <artifactId>biz-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
(2)新建一个配置文件读取类 BizProperties,代码如下:
//配置属性
@Data
@ConfigurationProperties(prefix="hi")
public class BizProperties {
        private String name;
}
(3)新建 Service类BizService,代码如下:
//声明BizService类
public class BizService {
        public String name;
        public BizService(String name) {
                this.name = name;
        }
        public String say() {
                return "hi " + this.name;
        }
}
(4)新建自动配置类 BizAutoConfiguration,代码如下:
//配置类,创建BizService对象
@Configuration
@EnableConfigurationProperties(BizProperties.class)
//程序需要配置hi.name属性才能生效
@ConditionalOnProperty("hi.name")
public class BizAutoConfiguration {
        @Bean
        public BizService bizService(BizProperties bizProperties) {
                //创建BizService
                return new BizService(bizProperties.getName());
        }
}

注意:@ConditionalOnProperty("hi.name")注解表示只有配置文件中有hi.name属性时才自动配置Bean对象BizService。

(5)在 resources/META-INF 下添加 spring.factories 指定的自动装配类,配置如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.spring.boot.configuration.BizAutoConfiguration

(6)改造创建 spring boot 应用的工程。首先依赖 biz-spring-boot-starter 包,然后在 application. properties 文件中新增配置,具体如下:

hi.name=Spring Boot

(7)改造 HiController 类,自动注入 BizService,代码如下:
//改造HiController
@RestController
@RequestMapping("/hi")
public class HiController {
    @Resource
    private BizService bizService;
    @GetMapping("/springBoot")
    public String hi(){
        return bizService.say();
    }
}
(8)重新启动应用,在浏览器中访问 http://localhost:8080/hi/springBoot,将显示“hi Spring Boot!”。

优秀文章