React.js 与 Spring Data REST:第一部分 - 基本功能

工程 | Greg L. Turnquist | 2015 年 9 月 1 日 | ...
要查看此代码的更新,请访问我们的 React.js 与 Spring Data REST 教程

Spring 社区的各位,欢迎!

这是几篇博客文章的第一篇。在本期中,您将看到如何快速启动并运行一个最基本的 Spring Data REST 应用程序。然后,您将使用 Facebook 的 React.js 工具集在其之上构建一个简单的 UI。

第 0 步 - 设置您的环境

您可以随时从该存储库 获取代码 并进行学习。

如果您想自己动手,请访问 http://start.spring.io 并选择以下选项

  • Rest Repositories
  • Thymeleaf
  • JPA
  • H2

此演示使用 Java 8、Maven 项目和最新稳定的 Spring Boot 版本。这将为您提供一个干净的空白项目。之后,您可以添加本期中明确显示到的各种文件,和/或从上面列出的存储库中借用。

起初……

起初,有数据。一切都很好。但随后人们希望通过各种方式访问数据。多年来,人们拼凑了许多 MVC 控制器,其中许多使用了 Spring 强大的 REST 支持。但一遍又一遍地重复会耗费大量时间。

Spring Data REST 解决了在做了一些假设的情况下,这个问题可以变得多么简单

  • 开发人员使用支持存储库模型的 Spring Data 项目。
  • 系统使用公认的、行业标准的协议,如 HTTP 动词、标准化的媒体类型和 IANA 批准的链接名称。

声明您的域

任何基于 Spring Data REST 的应用程序的基石都是域对象。在本期中,您将构建一个应用程序来跟踪公司的员工。通过创建一个如下的数据类型来启动这个过程

src/main/java/com/greglturnquist/payroll/Employee.java
@Data
@Entity
public class Employee {
private @Id @GeneratedValue Long id;
private String firstName;
private String lastName;
private String description;

private Employee() {}

public Employee(String firstName, String lastName, String description) {
	this.firstName = firstName;
	this.lastName = lastName;
	this.description = description;
}

}

  • @Entity 是一个 JPA 注解,它表示整个类将存储在关系表中。
  • @Id@GeneratedValue 是 JPA 注解,用于表示主键,并在需要时自动生成。
  • @Data@RequiredArgsConstructor 是 Project Lombok 注解,用于自动生成 getter、setter、构造函数、toString、hash、equals 等。它减少了样板代码。

此实体用于跟踪员工信息。在这种情况下,是他们的姓名和工作描述。

注意
Spring Data REST 不限于 JPA。它支持许多 NoSQL 数据存储,但在这里我们不会介绍它们。

定义存储库

Spring Data REST 应用程序的另一个关键部分是创建相应的存储库定义。

src/main/java/com/greglturnquist/payroll/EmployeeRepository.java
public interface EmployeeRepository extends CrudRepository<Employee, Long> {

}

  • 存储库扩展了 Spring Data Commons 的 CrudRepository,并注入了域对象的类型及其主键。

仅此而已!事实上,如果它是顶级的且可见的,您甚至不必注解它。如果您使用 IDE 并打开 CrudRepository,您会发现其中已经定义了大量预构建的方法。

注意
您可以根据需要 定义自己的存储库。Spring Data REST 也支持这一点。

预加载演示

要使用此应用程序,您需要预先加载一些数据,如下所示

src/main/java/com/greglturnquist/payroll/DatabaseLoader.java
@Component
public class DatabaseLoader implements CommandLineRunner {
private final EmployeeRepository repository;

@Autowired
public DatabaseLoader(EmployeeRepository repository) {
	this.repository = repository;
}

@Override
public void run(String... strings) throws Exception {
	this.repository.save(new Employee("Frodo", "Baggins…

本周 Spring - 2015 年 9 月 1 日

工程 | Josh Long | 2015 年 9 月 1 日 | ...

欢迎来到又一期《本周 Spring》!Spring 团队正全力以赴地准备 SpringOne2GX 大会!时间过得真快!我简直不敢相信我们已经要迎来九月了!本周我正在日本东京,参加 Spring 用户组的大型Spring in Summer活动,并在会上做了主题演讲以及关于 Spring Boot 和 Spring Cloud 的两个演讲。这个为期一天的活动吸引了一些公司最大的网站,非常有趣!

好了,言归正传!

本周 Spring - 2015 年 8 月 25 日

工程 | Josh Long | 2015 年 8 月 25 日 | ...

欢迎来到又一期《本周 Spring》!本周我在巴西里约热内卢参加了非常棒的 QCon Rio 会议,然后我将前往日本东京参加一个Spring in Summer大会,与当地的 Spring 用户见面!

团队正忙碌于今年的 SpringOne2GX 2016,这是有史以来最大、最棒的 SpringOne2GX!今年,您将看到我们用更少的资源做更多的事情,并且能成功部署到生产环境!这对我们每个人来说都很令人兴奋,对听众来说也是如此!

将Spring Web MVC应用程序从JSP迁移到AngularJS

工程 | Michael Isvy | 2015年8月19日 | ...

作者注

此文由Han LimTony Nguyen特邀撰写。Han和Tony在新加坡Spring用户组上就Spring + Angular JS做了一次精彩的演讲。此博客基于他们的演讲内容。

摘要

在本文中,我们将尝试描述我们从JSP、Struts和Velocity等服务器端渲染视图技术迁移到使用AngularJS(一个流行的现代浏览器JavaScript框架)的客户端渲染视图技术的经验。我们将讨论在进行此更改时需要注意的一些事项以及可能遇到的潜在陷阱。如果…

本周 Spring - 2015 年 8 月 18 日

工程 | Josh Long | 2015年8月19日 | ...

欢迎来到又一期《本周 Spring》!一如既往,我们有很多内容要介绍,那么就开始吧!本周我回到了巴西圣保罗拜访客户,然后前往 里约参加 QCon Rio!如果您在这两个城市,请在 Twitter 上给我发消息 ,我们一起喝杯咖啡

  • 今天,Pivotal 首席执行官 Paul Maritz 卸任[并欢迎 Pivotal Labs 创始人 Rob Mee 担任新任首席执行官。有 Paul 的帖子 和 Rob 的帖子。谢谢你,Paul,欢迎你,Rob!
  • 令人惊叹的 Scott Frederick 刚刚宣布 Spring Cloud Connectors 1.2.0 正式发布!快来看看吧!
  • Spring 忍者 Stéphane Nicoll 刚刚宣布了 Spring Boot 1.3M4,其中包含大量修复和改进
  • Spring Integration 的负责人 Gary Russell 刚刚宣布了功能非常丰富的 Spring Integration 4.2 新版本,包括但不限于:支持 Security Context Propagation、STOMP 客户端通道适配器、指标、新的 Spring Framework 4.2 事件通道适配器、进程屏障组件、最后修改的文件列表过滤器、编解码器、JMS 共享订阅、(S)FTP 改进、SOAP Action Propagation,

本周 Spring - 2015年8月11日

工程 | Josh Long | 2015年8月12日 | ...

欢迎来到又一期本周 Spring!一如既往,我们有很多内容要分享,让我们开始吧!

Spring Statemachine 1.0.0.M3 发布

工程 | Janne Valkealahti | 2015 年 8 月 4 日 | ...

我们很高兴地宣布 Spring Statemachine 1.0.0.M3 的第三个里程碑版本。Spring Statemachine

自上一个里程碑以来发生了很多事情,到达这里比我们最初估计的要花费更多时间。既然我们已经到达了,让我们看看这个版本中有哪些新功能。

除了常规的 bug 修复之外,这里还有一些主要的新功能列表

  • 分布式状态机
  • 持久化状态机上下文
  • 放宽枚举作为状态和事件的使用
  • 状态机的编程实例化
  • 新的食谱模块
  • 新的示例(持久化、zookeeper、web)

#分布式状态机

分布式状态是一个新的…

本周 Spring - 2015 年 8 月 4 日

工程 | Josh Long | 2015 年 8 月 4 日 | ...

欢迎来到又一期《本周 Spring》!本周我在华盛顿特区,与我的朋友 Andrew Clay Shafer 一起在 Agile 2015 大会上进行一些关于云原生应用的真实分享,然后前往科罗拉多州丹佛再次与客户交流!如果您在这两个地区,请打个招呼!

我们正快速接近 SpringOne2GX 2015!团队交付越来越多令人惊叹的功能,这里充满了兴奋!接下来的几周,直到 SpringOne2GX,是我一年中最喜欢的时光。请关注本版块,将有大量新版本发布!

本周 Spring - 2015 年 7 月 28 日

工程 | Josh Long | 2015 年 7 月 29 日 | ...

欢迎来到又一期《本周 Spring》!我们有很多内容要介绍,那么就开始吧!

使用 Spring 的微服务

工程 | Paul Chapman | 2015 年 7 月 14 日 | ...

引言

注意:2019 年 7 月修订

使用 Spring、Spring Boot 和 Spring Cloud 设置微服务系统的简单示例。

微服务允许大型系统由许多协作组件构建。它在进程级别实现了 Spring 在组件级别一直做的事情:松散耦合的进程而不是松散耦合的组件。

Shopping Application

例如,想象一个在线商店,其中包含用于用户帐户、产品目录订单处理和购物车等的独立微服务。

不可避免地,您必须设置和配置许多动态部件才能……

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有