logo资料库

毕业设计英文翻译springboot篇一万字.docx

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
1.1Spring 风云再起
1.1.1重新认识
1.1.2Spring Boot 精要
1.自动配置
2.起步依赖
3.命令行界面
4.Actuator
1.1.3 Spring Boot 不是什么
1.2Spring Boot 入门
1.2.1安装 Spring Boot CLI
1.手工安装Spring Boot CLI
2. 使用Software Development Kit Manager进行安装
3. 使用Homebrew进行安装
4.使用MacPorts进行安装
5.开启命令行补全
1.2.2使用 Spring Initializr 初始化 Spring Boot 项目
1.使用Spring Initializr的Web界面
2.在Spring Tool Suite里创建Spring Boot项目
3.在IntelliJ IDEA里创建Spring Boot项目
4.在Spring Boot CLI里使用Initializr
1.3小结
2.1 运用 Spring Boot
Springboot Spring Framework 已有十余年的历史了,已成为 Java 应用程序开发框架 的事实标准。在如此 悠久的历史背景下,有人可能会认为 Spring 放慢了脚步, 躺在了自己的荣誉簿上,再也做不出什 么新鲜的东西,或者是让人激动的东西。 甚至有人说,Spring 是遗留项目,是时候去看看其他创 新的东西了。 这些人说得不对。 Spring 的生态圈里正在出现很多让人激动的新鲜事物,涉及的领域涵盖云 计算、大数据、无 模式的数据持久化、响应式编程以及客户端应用程序开发。 在过去的一年多时间里,最让人兴奋、回头率最高、最能改变游戏规则的 东西,大概就是 Spring Boot 了。Spring Boot 提供了一种新的编程范式,能 在最小的阻力下开发 Spring 应用程序。有了它, 你可以更加敏捷地开发 Spring 应用程序,专注于应用程序的功能,不用在 Spring 的配置上多花功 夫, 甚至完全不用配置。实际上,Spring Boot 的一项重要工作就是让 Spring 不再 成为你成功路上 的绊脚石。 本书将探索 Spring Boot 开发的诸多方面,但在 开始前,我们先大概了解一下 Spring Boot 的 功能。 1.1 Spring 风云再起 Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无需 开发重量级的 Enterprise JavaBean(EJB), Spring 为企业级 Java 开发提供了一种相对简单的方法,通 过依赖注入和面向 切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。 虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。一开始, Spring 用 XML 配置, 而且是很多 XML 配置。Spring 2.5 引入了基于注解的组 件扫描,这消除了大量针对应用程序自身组件的显式 XML 配置。Spring 3.0 引 入了基于 Java 的配置,这是一种类型安全的可重构配置方式, 可以代替 XML。 尽管如此,我们依旧没能逃脱配置的魔爪。开启某些 Spring 特性时,比如 事务管理和 Spring MVC,还是需要用 XML 或 Java 进行显式配置。启用第三方 库时也需要显式配置,比如基于 Thymeleaf 的 Web 视图。配置 Servlet 和过滤 器(比如 Spring 的 DispatcherServlet)同样需要在 web.xml 或 Servlet 初始 化代码里进行显式配置。组件扫描减少了配置量,Java 配置让它看上去简洁 不少,但 Spring 还是需要不少配置。 所有这些配置都代表了开发时的损耗。因为在思考 Spring 特性配置和解决 业务问题之间需要 进行思维切换,所以写配置挤占了写应用程序逻辑的时间。 和所有框架一样,Spring 实用,但与 此同时它要求的回报也不少。 除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪 些库就已经够让人 头痛的了,你还要知道这些库的哪个版本和其他库不会有冲 突,这难题实在太棘手。
并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错 了依赖的版本,随 之而来的不兼容问题毫无疑问会是生产力杀手。 Spring Boot 让这一切成为了过去。 1.1.1 重新认识 Spring 假设你受命用 Spring 开发一个简单的 Hello World Web 应用程序。 你该做什么?我能想到一些 基本的需要。 ■ 一个项目结构,其中有一个包含必要依赖的 Maven 或者 Gradle 构建文件, 最起码要有 Spring MVC 和 Servlet API 这些依赖。 ■ 一个 web.xml 文件(或者一个 WebApplicationInitializer 实现),其中 声明了 Spring 的 DispatcherServlet。 ■ 一个启用了 Spring MVC 的 Spring 配置。 ■ 一个控制器类,以“Hello World”响应 HTTP 请求。 ■ 一个用于部署应用程序的 Web 应用服务器,比如 Tomcat。 最让人难以接受的是,这份清单里只有一个东西是和 Hello World 功能相 关的,即控制器,剩 下的都是 Spring 开发的 Web 应用程序必需的通用样板。 既然所有 Spring Web 应用程序都要用到它 们,那为什么还要你来提供这些东 西呢? 假设这里只需要控制器。代码清单 1-1 所示基于 Groovy 的控制器类就是一 个简单而完整的 Spring 应用程序 @RestController class HelloController { @RequestMapping("/") def hello() { return "Hello World" } } 这里没有配置,没有 web.xml,没有构建说明,甚至没有应用服务器,但 这就是整个应用程 序了。Spring Boot 会搞定执行应用程序所需的各种后勤工 作,你只要搞定应用程序的代码就好。 假设你已经装好了 Spring Boot 的命令行界面(Command Line Interface, CLI),可以像下面这 样在命令行里运行 HelloController:
$ spring run HelloController.groovy 想必你已经注意到了,这里甚至没有编译代码,Spring Boot CLI 可以运 行未经编译的代码。 之所以选择用 Groovy 来写这个控制器示例,是因为 Groovy 语言的简洁与 Spring Boot 的简洁有 异曲同工之妙。但 Spring Boot 并不强制要求使用 Groovy。实际上,本书中的很多代码都是用 Java 写的,但在恰当的时候,偶 尔也会出现一些 Groovy 代码。 不要客气,直接跳到 1.2.1 节吧,看看如何安装 Spring Boot CLI,这样 你就能试着编写这个小 小的 Web 应用程序了。现在,你将看到 Spring Boot 的 关键部分,看到它是如何改变 Spring 应用程 序的开发方式的。 1.1.2 Spring Boot 精要 Spring Boot 将很多魔法带入了 Spring 应用程序的开发之中,其中最重要 的是以下四个核心。 ■ 自动配置:针对很多 Spring 应用程序常见的应用功能,Spring Boot 能 自动提供相关配置。 ■ 起步依赖:告诉 Spring Boot 需要什么功能,它就能引入需要的库。 ■ 命令行界面:这是 Spring Boot 的可选特性,借此你只需写代码就能完 成完整的应用程序, 无需传统项目构建。 ■ Actuator:让你能够深入运行中的 Spring Boot 应用程序,一探究竟。 每一个特性都在通过自己的方式简化 Spring 应用程序的开发。本书会探寻 如何将它们发挥到 极致,但就目前而言,先简单看看它们都提供了哪些功能吧。 1. 自动配置 在任何 Spring 应用程序的源代码里,你都会找到 Java 配置或 XML 配置 (抑或两者皆有),它们 为应用程序开启了特定的特性和功能。举个例子,如 果你写过用 JDBC 访问关系型数据库的应用 程序,那你一定在 Spring 应用程序 上下文里配置过 JdbcTemplate 这个 Bean。我打赌那段配置看 起来是这样的: @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(dataSource); } 这段非常简单的 Bean 声明创建了一个 JdbcTemplate 的实例,注入了一个 DataSource 依赖。当 然,这意味着你还需要配置一个 DataSource 的 Bean,这 样才能满足依赖。假设你将配置一个嵌 入式 H2 数据库作为 DataSource Bean, 完成这个配置场景的代码大概是这样的:
@Bean public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScripts('schema.sql', 'data.sql') .build(); } 这个 Bean 配置方法创建了一个嵌入式数据库,并指定在该数据库上执行两 段 SQL 脚本。build() 方法返回了一个指向该数据库的引用。 这两个 Bean 配 置方法都不复杂,也不是很长,但它们只是典型 Spring 应用程序配置的一小部 分。除此之外,还有无数 Spring 应用程序有着完全相同的方法。所有需要用到 嵌入式数据库和 JdbcTemplate 的应用程序都会用到那些方法。简而言之,这 就是一个样板配置。 既然它如此常见,那为什么还要你去写呢? Spring Boot 会为这些常见配 置场景进行自动配置。如果 Spring Boot 在应用程序的 Classpath 里 发 现 H2 数据库的库,那么它就自动配置一个嵌入式 H2 数据库。如果在 Classpath 里发 现 JdbcTemplate,那么它还会为你配置一个 JdbcTemplate 的 Bean。你无需操 心那些 Bean 的配置, Spring Boot 会做好准备,随时都能将其注入到你的 Bean 里。 Spring Boot 的自动配置远不止嵌入式数据库和 JdbcTemplate,它有大把 的办法帮你减轻配 置负担,这些自动配置涉及 Java 持久化 API(Java Persistence API,JPA)、Thymeleaf 模板、安全和 Spring MVC。第 2 章会深 入讨论自动配置这个话题。 2. 起步依赖 向项目中添加依赖是件富有挑战的事。你需要什么库?它的 Group 和 Artifact 是什么?你需要 哪个版本?哪个版本不会和项目中的其他依赖发生 冲突? Spring Boot 通过起步依赖为项目的依赖管理提供帮助。起步依赖其实 就是特殊的 Maven 依 赖和 Gradle 依赖,利用了传递依赖解析,把常用库聚合 在一起,组成了几个为特定功能而定制 的依赖。 举个例子,假设你正在用 Spring MVC 构造一个 REST API,并将 JSON(JavaScript Object Notation) 作为资源表述。此外,你还想运用遵循 JSR-303 规范的声明式校验,并使用嵌 入式的 Tomcat 服务器来提供服务。要实现以上目标,你在 Maven 或 Gradle 里 至少需要以下 8 个依赖: ■ org.springframework:spring-core ■ org.springframework:spring-web ■ org.springframework:spring-webmvc
■com.fasterxml.jackson.core:jackson-databind ■ org.hibernate:hibernate-validator ■ org.apache.tomcat.embed:tomcat-embed-core ■ org.apache.tomcat.embed:tomcat-embed-el ■ org.apache.tomcat.embed:tomcat-embed-logging-juli 不过,如果打算利用 Spring Boot 的起步依赖,你只需添加 Spring Boot 的 Web 起步依赖,仅此一个。它会根据依赖 传递把其他所需依赖引入项目里, 你都不用考虑它们。 比起减少依赖数量,起步依赖还引入了一些微妙的变化。 向项目中添加了 Web 起步依赖,实 际上指定了应用程序所需的一类功能。因为 应用是个 Web 应用程序,所以加入了 Web 起步依赖。 与之类似,如果应用程序 要用到 JPA 持久化,那么就可以加入 jpa 起步依赖。如果需要安全功能, 那就 加入 security 起步依赖。简而言之,你不再需要考虑支持某种功能要用什么库 了,引入相关起 步依赖就行。 此外,Spring Boot 的起步依赖还把你从“需 要这些库的哪些版本”这个问题里解放了出来。 起步依赖引入的库的版本都是 经过测试的,因此你可以完全放心,它们之间不会出现不兼容的 情况。 和自 动配置一样,第 2 章就会深入讨论起步依赖。 3. 命令行界面 除了自动配置和起步依赖,Spring Boot 还提供了一种很有意思的新方法, 可以快速开发 Spring 应用程序。正如之前在 1.1 节里看到的那样,Spring Boot CLI 让只写代码即可实现应用程序成为可能。 Spring Boot CLI 利用了起 步依赖和自动配置,让你专注于代码本身。不仅如此,你是否注意 到代码清单 1-1 里没有 import?CLI 如何知道 RequestMapping 和 RestController 来自哪 个包 呢?说到这个问题,那些类最终又是怎么跑到 Classpath 里的呢? 说得 简单一点,CLI 能检测到你使用了哪些类,它知道要向 Classpath 中添加哪些 起步依赖才 能让它运转起来。一旦那些依赖出现在 Classpath 中,一系列自动 配置就会接踵而来,确保启用 DispatcherServlet 和 Spring MVC,这样控制器 就能响应 HTTP 请求了。 Spring Boot CLI 是 Spring Boot 的非必要组成部分。 虽然它为 Spring 带来了惊人的力量,大大 简化了开发,但也引入了一套不太 常规的开发模型。要是这种开发模型与你的口味相去甚远,那 也没关系,抛开 CLI,你还是可以利用 Spring Boot 提供的其他东西。不过如果喜欢 CLI,你一 定想 看看第 5 章,其中深入探讨了 Spring Boot CLI。 4. Actuator Spring Boot 的最后一块“拼图”是 Actuator,其他几个部分旨在简化 Spring 开发,而 Actuator 则要提供在运行时检视应用程序内部情况的能力。 安装了 Actuator 就能窥探应用程序的内部情况 了,包括如下细节: ■ Spring 应用程序上下文里配置的 Bean
■ Spring Boot 的自动配置做的决策 ■ 应用程序取到的环境变量、系统属性、配置属性和命令行参数 ■ 应用程序里线程的当前状态  应用程序最近处理过的 HTTP 请求 的追踪情况 ■ 各种和内存用量、垃圾回收、Web 请求以及数据源用量相关的指 标 Actuator 通过 Web 端点和 shell 界面向外界提供信息。如果要借助 shell 界面,你可以打开 SSH (Secure Shell),登入运行中的应用程序,发送指令 查看它的情况。 第 7 章会详细探索 Actuator 的功能。 1.1.3 Spring Boot 不是什么 因为 Spring Boot 实在是太惊艳了,所以过去一年多的时间里有不少和它 相关的言论。原先听 到或看到的东西可能给你造成了一些误解,继续学习本书 前应该先澄清这些误会。 首先,Spring Boot 不是应用服务器。这个误解是这样产生的:Spring Boot 可以把 Web 应用程 序变为可自执行的 JAR 文件,不用部署到传统 Java 应 用服务器里就能在命令行里运行。Spring Boot 在应用程序里嵌入了一个 Servlet 容器(Tomcat、Jetty 或 Undertow),以此实现这一功能。但这是 内 嵌的 Servlet 容器提供的功能,不是 Spring Boot 实现的。 与之类似,Spring Boot 也没有实现诸如 JPA 或 JMS(Java Message Service,Java 消息服务)之 类的企业级 Java 规范。它的确支持不少企业级 Java 规范,但是要在 Spring 里自动配置支持那些特 性的 Bean。例如,Spring Boot 没有实现 JPA,不过它自动配置了某个 JPA 实现(比如 Hibernate)的 Bean,以此支持 JPA。 最后,Spring Boot 没有引入任何形式的代码生成,而是利用了 Spring 4 的条件化配置特性, 以及 Maven 和 Gradle 提供的传递依赖解析,以此实现 Spring 应用程序上下文里的自动配置。 简而言之,从本质上来说,Spring Boot 就是 Spring,它做了那些没有它 你自己也会去做的 Spring Bean 配置。谢天谢地,幸好有 Spring,你不用再写 这些样板配置了,可以专注于应用程序的逻辑, 这些才是应用程序独一无二的 东西。 现在,你应该对 Spring Boot 有了大概的认识,是时候构建你的第一个 Spring Boot 应用程序了。 先从重要的事情开始,该怎么入手呢? 1.2 Spring Boot 入门 从根本上来说,Spring Boot 的项目只是普通的 Spring 项目,只是它们正 好用到了 Spring Boot 的起步依赖和自动配置而已。因此,那些你早已熟悉的
从头创建 Spring 项目的技术或工具,都能 用于 Spring Boot 项目。然而,还 是有一些简便的途径可以用来开启一个新的 Spring Boot 项目。 最快的方法就 是安装 Spring Boot CLI,安装后就可以开始写代码,如代码清单 1-1,接着通 过 CLI 来运行就好。 1.2.1 安装 Spring Boot CLI 如前文所述,Spring Boot CLI 提供了一种有趣的、不同寻常的 Spring 应 用程序开发方式。第 5 章里会详细解释 CLI 提供的功能。这里先来看看如何安 装 Spring Boot CLI,这样才能运行代码清 单 1-1。 Spring Boot CLI 有好几种安装方式。 ■ 用下载的分发包进行安装。 ■ 用 Groovy Environment Manager 进行安装。 ■ 通过 OS X Homebrew 进行安装。 ■ 使用 MacPorts 进行安装。 我们分别看一下这几种方式。除此之外,还要了解如何安装 Spring Boot CLI 的命令行补全支持, 如果你在 BASH 或 zsh shell 里使用 CLI,这会非常有 用(抱歉了,各位 Windows 用户)。先来看看如 何用分发包手工安装 Spring Boot CLI 吧。 1.手工安装 Spring Boot CLI 安装 Spring Boot CLI 最直接的方法大约是下载、解压,随后将它的 bin 目录添加到系统路径里。 你可以从以下两个地址下载分发包: http://repo.spring.io/release/org/springframework/boot/spring-boot- cli/1.3.0.RELEASE/springboot-cli-1.3.0.RELEASE-bin.zip http://repo.spring.io/release/org/springframework/boot/spring-boot- cli/1.3.0.RELEASE/springboot-cli-1.3.0.RELEASE-bin.tar.gz 下载完成之后,把它解压到文件系统的任意目录里。在解压后的目录里, 你会找到一个 bin 目录,其中包含了一个 spring.bat 脚本(用于 Windows 环 境)和一个 spring 脚本(用于 Unix 环境)。 把这个 bin 目录添加到系统路径 里,然后就能使用 Spring Boot CLI 了。 为 Spring Boot 建立符号链接 如果是在安装了 Unix 的机器上使用 Spring Boot CLI, 最好建立一个指向解压目录的符号链接,然后把这个符号链接添加 到系统路径,而不是 实际的目录。这样后续升级 Spring Boot 新版本,或是转 换版本,都会很方便,只要重建 一下符号链接,指向新版本就好了。 你可以先浅尝辄止,看看你所安装的 CLI 版本号: $ spring --version 如果一切正常,你会看到安装好的 Spring Boot CLI 的版本号。 虽然这是手工
安装,但一切都很容易,而且不要求你安装任何附加的东西。如果你是 Windows 用户,也别无选择,这是唯一的安装方式。但如果你使用的是 Unix 机 器,而且想要稍微自动化一 点的方式,那么可以试试 Software Development Kit Manager。 2. 使用 Software Development Kit Manager 进行安装 软件开发工具管理包也能用来安装和管理多版本 Spring Boot CLI。使用 前,你需要先从 http://sdkman.io 获取并安装 SDKMAN。最简单的安装方式是 使用命令行: $ curl -s get.sdkman.io | bash 跟随输出的指示就能完成 SDKMAN 的安装。在我的机器上,我在命令行里执 行了如下命令: $ source "/Users/habuma/.sdkman/bin/sdkman-init.sh" 注意,用户不同,这条命令也会有所不同。我的用户目录是/Users/habuma, 因此这也是 shell 脚本的根路径。你需要根据实际情况稍作调整。一旦安装好 了 SDKMAN,就可以用下面的方式 来安装 Spring Boot CLI 了: $ sdk install springboot $ spring --version 假设一切正常,你将看到 Spring Boot 的当前版本号。 如果想升级新版本 的 Spring Boot CLI,只需安装并使用即可。使用 SDKMAN 的 list 命令可 以找 到可用的版本: $ sdk list springboot list 命令列出了所有可用版本,包括已经安装的和正在使用的。从中选择一个 进行安装,然后 就可以正常使用。举例来说,要安装 Spring Boot CLI 1.3.0.RELEASE,直接使用 install 命令, 指定版本号: $ sdk install springboot 1.3.0.RELEASE 这样就会安装一个新版本,随后你会被询问是否将其设置为默认版本。要 是你不想把它作为默认 版本,或者想要切换到另一个版本,可以用 use 命令: $ sdk use springboot 1.3.0.RELEASE 如果你希望把那个版本作为所有 shell 的默认版本,可以使用 default 命令: $ sdk default springboot 1.3.0.RELEASE 使用 SDKMAN 来管理 Spring Boot CLI 有一个好处,你可以便捷地在 Spring Boot 的不同版本之 间切换。这样你可以在正式发布前试用快照版本 (snapshot)、里程碑版本(milestone)和尚未正 式发布的候选版本 (release candidate),试用后再切回稳定版本进行其他工作。
分享到:
收藏