使用 Spring 框架 创建 Java Web 应用程序从未如此简单。如果您已经熟悉 Java 并且几乎没有创建 Web 应用程序的经验,或者如果您担心所有酷孩子都放弃 Java 转而使用 Ruby 和 Node.js,那么您会想阅读这篇文章。
我的目的是提供一个实用指南,帮助您快速启动并运行使用 Java 和 Spring 构建现代 Web 应用程序。
我们将使用最新版本的 Java、Spring Framework (4.x)、Spring Boot (v1.2.x)、Spring Security、Spring Data JPA、Thymeleaf 和 Maven 3。
为什么是春天?
Spring 是最广泛采用的开源 Java 框架之一。
- Spring 是一个成熟但仍然具有创新性的开源框架
- Spring有一个非常活跃的 社区
- Spring 是轻量级的——可以使用嵌入式容器从命令行运行
- Spring,尤其是 Spring Boot 让你非常有效率——不需要 XML 配置
Spring 不仅仅是一个框架……
……这是一个涵盖构建 Web 应用程序所需的大多数技术的平台:
- 创建 MVC 应用程序
- 提供身份验证和授权
- 使用 JDBC、Hibernate 和 JPA 连接到 RDBMS 数据库
- 连接到 NoSQL 数据库(MongoDB、Neo4J、Redis、Solr、Hadoop 等)
- 处理消息(JMS、AMQP)
- 缓存
- ETC。
是时候写一些代码了
在本教程中,我们将创建一个示例 url-shortener 应用程序(源代码可 在此处 获得),虽然这篇文章并未涵盖构建 Web 应用程序的所有方面,但希望您能找到足够的有用信息,以便能够开始并想了解更多。
该应用程序由单个 HTML 页面组成,它可以从任何 url 创建一个短 url,正如您可能猜到的那样,它还可以从短 url 重定向到原始 url。
要运行它,请在 CLI 中执行以下命令(假设您已经安装了 Maven v3 ):
$ mvn spring-boot:run
成分
你的应用程序.java
这是应用程序的主要类,它初始化 Spring 上下文,包括该项目中的所有 Spring 组件,并在嵌入式 Apache Tomcat ( http://tomcat.apache.org ) Web 容器中启动 Web 应用程序。
$ mvn spring-boot:run
基本上是 @SpringBootApplication 和 SpringApplication.run() 方法在这里发挥了作用。
网址控制器.java
$ mvn spring-boot:run
遵循 MVC 范例,此类充当处理 HTTP 请求的控制器(注意@Controller 注释)。此类中使用 @RequestMapping 注释的每个方法都映射到特定的 HTTP 端点:
-
showForm():显示主屏幕,用户可以在其中输入要缩短的 url
$ mvn spring-boot:run
-
redirectToUrl():从缩短的 url 重定向到原始 url
$ mvn spring-boot:run
-
shortenUrl():顾名思义,它会创建所提供 url 的缩短版本,并将其传递给 shortener.html 以进行显示
$ mvn spring-boot:run
如您所见,@RequestMapping 注释负责将单个 url 映射到 Java 方法。该方法可以有多个参数:
- 来自 url (/{id}) 的动态部分的 @PathVariable(即:id),或
- 一个@RequestParam,或者
- 一个 POJO(普通旧 Java 对象),其中字段对应于请求参数,或者
- @RequestBody 在 POST 请求的情况下,或
- Spring 提供的其他预定义 beans(例如,HttpServletResponse)
ShortenUrlRequest.java
缩短 url 请求由 Spring 映射到此 POJO(普通旧 Java 对象)。 Spring 还负责验证请求,请参阅 url 字段上的注释。
$ mvn spring-boot:run
缩短器.html
这是一个基于 Thymeleaf ( http://www.thymeleaf.org/ ) 的模板,它使用 Twitter Bootstrap ( http://getbootstrap.com/ ) 呈现主屏幕的 HTML 代码。它呈现由 UrlController 类中的请求映射提供的数据(模型)。
$ mvn spring-boot:run
InMemoryUrlStoreService.java
该应用程序目前仅将缩短的 url 持久保存到在此极简类中实现的内存持久层中。稍后我们可以通过实现 IUrlStoreService 接口将数据保存到数据库来改进这一点。
$ mvn spring-boot:run
注意 @Service 方法告诉 Spring 这是一个来自服务层的 bean,可以注入到其他 bean 中,比如 UrlController。
结论
简而言之就是这样。我们涵盖了这个 Web 应用程序的所有部分。我希望您现在同意使用 Java 和 Spring 构建 Web 应用程序会很有趣。不再有样板代码和 XML 配置,最新版本的 Spring 会为我们处理这些。
如果您有兴趣了解有关 Spring 框架和 Spring Boot 的更多信息,请不要忘记订阅我的时事通讯以获取有关 Spring 的最新更新。如果您有任何问题或建议,请随时在下方发表评论。