返回介绍

1.3 使用 Spring Boot

发布于 2025-04-26 13:26:31 字数 6440 浏览 0 评论 0 收藏

任何应用的开发都需要对项目的创建、运行和发布等进行管理,使用 Spring Boot 框架进行开发,可以选择使用 Maven 或 Gradle 等项目管理工具。在这里我们使用的是 Maven。

1.3.1 Maven 依赖管理

使用 Maven,通过导入 Spring Boot 的 starter 模块,可以将许多程序依赖包自动导入工程中。使用 Maven 的 parent POM,还可以更容易地管理依赖的版本和使用默认的配置,工程中的模块也可以很方便地继承它。例如,使用 1.2.1 节创建的工程,修改 pom.xml 文件,使用如代码清单 1-1 所示的简单 Maven 配置,基本上就能为一个使用 Spring Boot 开发框架的 Web 项目开发提供所需的相关依赖。

代码清单 1-1 Spring Boot Web 基本依赖配置

<?xml version="1.0" encoding="UTF-8"?>
<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>springboot.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.2.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

这里只使用了一个依赖配置 spring-boot-starter-web 和一个 parent 配置 spring-boot-starter-parent,在工程的外部库(External Libraries)列表中,它自动引入的依赖包如代码清单 1-2 所示。

代码清单 1-2 Maven 加载的依赖列表

<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.13" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.13" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.4.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.16" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.0.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.0.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-logging-juli:8.0.30" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.0.30" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:1.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.2.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.1.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.5" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:4.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.2.4.RELEASE" level="project" />

在工程的外部库列表中,Spring Boot 已经导入了整个 springframework 依赖,以及 autoconfigure、logging、slf4j、jackson、tomcat 插件等,所有这些都是一个 Web 项目可能需要用到的东西(包括你已经考虑到的和没有考虑到的),它真是一个聪明的助手。

1.3.2 一个简单的实例

Spring Boot 的官方文档中提供了一个最简单的 Web 实例程序,这个实例只使用了几行代码,如代码清单 1-3 所示。虽然简单,但实际上这已经可以算作是一个完整的 Web 项目了。

代码清单 1-3 Spring Boot 简单实例

package springboot.example;
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;
@SpringBootApplication
@RestController
public class Application {
    @RequestMapping("/")
    String home() {
        return "hello";
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这个简单实例,首先是一个 Spring Boot 应用的程序入口,或者叫作主程序,其中使用了一个注解 @SpringBootApplication 来标注它是一个 Spring Boot 应用,main 方法使它成为一个主程序,将在应用启动时首先被执行。其次,注解 @RestController 同时标注这个程序还是一个控制器,如果在浏览器中访问应用的根目录,它将调用 home 方法,并输出字符串:hello。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。