现代 Java Spring 基本应用程序堆栈

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

使用 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 的最新更新。如果您有任何问题或建议,请随时在下方发表评论。

相关文章