- 前言
- 第一部分 基础应用开发
- 第 1 章 Spring Boot 入门
- 第 2 章 在 Spring Boot 中使用数据库
- 第 3 章 Spring Boot 界面设计
- 第 4 章 提高数据库访问性能
- 第 5 章 Spring Boot 安全设计
- 第二部分 分布式应用开发
- 第 6 章 Spring Boot SSO
- 第 7 章 使用分布式文件系统
- 第 8 章 云应用开发
- 第 9 章 构建高性能的服务平台
- 第三部分 核心技术源代码分析
- 第 10 章 Spring Boot 自动配置实现原理
- 第 11 章 Spring Boot 数据访问实现原理
- 第 12 章 微服务核心技术实现原理
- 附录 A 安装 Neo4j
- 附录 B 安装 MongoDB
- 附录 C 安装 Redis
- 附录 D 安装 RabbitMQ
- 结束语
1.3 使用 Spring Boot
任何应用的开发都需要对项目的创建、运行和发布等进行管理,使用 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。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论