Spring Team
Greg Turnquist

Greg Turnquist

Test-bitten script junky

Clarksville, TN USA

Greg is a test-bitten script junky. He is a member of the Spring team at Pivotal. He works on Spring Data REST, Spring Boot and other Spring projects, while also working as an editor-at-large of Spring's Getting Started guides. He launched the Nashville JUG in 2010. He created Spring Python and wrote "Spring Python 1.1" and "Python Testing Cookbook". He is currently writing "Learning Spring Boot". He has been a Spring fan for years.
Blog Posts by Greg Turnquist

React.js and Spring Data REST: Part 3 - Conditional Operations

In the previous session, you found out how to turn on Spring Data REST’s hypermedia controls, have the UI navigate by paging, and dynamically resize based on changing the page size. You added the ability to create and delete employees and have the pages adjust. But no solution is complete with taking into consideration updates made by other users on the same bit of data you are currently editing.

Feel free to grab the code from this repository and follow along. This session is based on the previous session’s app with extra things added.


Check out the new "Creating CRUD UI with Vaadin" guide

Greetings Spring community,

Today we have published a new guide: Creating CRUD UI with Vaadin.

This guide, written by the Vaadin team, shows how to nicely build a UI that taps into Spring Data, but doesn’t require writing a single line of JavaScript or HTML code.

Vaadin is real cool:

  • Comes with its own Spring Boot starter
  • Works nicely with constructor injection
  • Makes it dirt simple to plugin persistence solutions like Spring Data
  • Is armed with an arsenal of plugins to grow into real applications

Check out this newly minted guide and have fun!


React.js and Spring Data REST: Part 2 - Hypermedia

In the previous session, you found out how to stand up a backend payroll service to store employee data using Spring Data REST. A key feature it lacked was using the hypermedia controls and navigation by links. Instead, it hard coded the path to find data.

Feel free to grab the code from this repository and follow along. This session is based on the previous session’s app with extra things added.

In the beginning there was data…​and then there was REST

I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today’s example is the SocialSite REST API. That is RPC. It screams RPC…​.What needs to be done to make the REST architectural style clear on the notion that hypertext is a constraint? In other words, if the engine of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period. Is there some broken manual somewhere that needs to be fixed?

So, what exactly ARE hypermedia controls, i.e. hypertext, and how can you use them? To find out, let’s take a step back and look at the core mission of REST.

The concept of REST was to borrow ideas that made the web so successful and apply them to APIs. Despite the web’s vast size, dynamic nature, and low rate that clients, i.e. browsers, are updated, the web is an amazing success. Roy Fielding sought to use some of its constraints and features and see if that would afford similar expansion of API production and consumption.

One of the constraints is to limit the number of verbs. For REST, the primary ones are GET, POST, PUT, DELETE, and PATCH. There are others, but we won’t get into them here.

  • GET - fetch the state of a resource without altering the system
  • POST - create a new resource without saying where
  • PUT - replace an existing resource, overwriting whatever else is already there (if anything)
  • DELETE - remove an existing resource
  • PATCH - alter an existing resource partially

These are standardized HTTP verbs with well written specs. By picking up and using already coined HTTP operations, we don’t have to invent a new language and educate the industry.

Another constraint of REST is to use media types to define the format of data. Instead of everyone writing their own dialect for the exchange of information, it would be prudent to develop some media types. One of the most popular ones to be accepted is HAL, media type application/hal+json. It is Spring Data REST’s default media type. A keen value is that there is no centralized, single media type for REST. Instead, people can develop media types and plug them in. Try them out. As different needs become available, the industry can flexibly move.

A key feature of REST is to include links to relevant resources. For example, if you were looking at an order, a RESTful API would include a link to the related customer, links to the catalog of items, and perhaps a link to the store from which the order was placed. In this session, you will introduce paging, and see how to also use navigational paging links.


React.js and Spring Data REST: Part 1 - Basic Features

Welcome Spring community,

This is the first of several blog entries. In this session, you will see how to get a bare-bones Spring Data REST application up and running quickly. Then you will build a simple UI on top of it using Facebook’s React.js toolset.

Step 0 - Setting up your environment

Feel free to grab the code from this repository and follow along.

If you want to do it yourself, visit http://start.spring.io and pick these items:

  • Rest Repositories
  • Thymeleaf
  • JPA
  • H2

This demo uses Java 8, Maven Project, and the latest stable release of Spring Boot. This will give you a clean, empty project. From there, you can add the various files shown explicitly in this session, and/or borrow from the repository listed above.


Spring Guides Move to Java 8

Perhaps you’ve noticed some recent articles lately?

Okay, those last two aren’t articles, but were instead driven by the the rapid adoption of Java 8. Java 8 has been picked up by the development community FAST. Here on the Spring team, we believe strongly in adopting Java 8 for new applications. To support that and improve your own ability to move as well, we just updated all of the Spring Getting Started Guides to Java 8.


Check out Dave Syer's "Spring Security and AngularJS" blog series converted to tutorial

Greetings Spring community,

Dave Syer’s six-part blog series on Spring Security and AngularJS has been a smash hit! It has echoed across the twittersphere, torn up DZone, and drawn people far and wide.

Did you miss any of it? Perhaps you’ve heard of it and found it too difficult to track down the first post. No more.

Please navigate to our newly minted Spring Security and AngularJS tutorial and enjoy all that solid gold. We migrated 100% of it into that tutorial, made slight edits to the links, and polished it up just for you.


Screencast: How to create a RESTful app in five minutes or less

Recently, a friend of mine tweeted out a challenge:

"Name a framework in which you can create a new app expose a REST service with a database and deploy it to the cloud in five minutes. #grails"

The moment I spotted that tweet, I responded, "Spring Boot + Spring Data REST"! I realized he was kindly pointing out how easy it is to build RESTful services with Grails (a great framework). But I couldn't resist showing the ease and power of Spring Data REST.

To prove my point, I couldn't resisting crafting a screencast. In the linked screencast, I show how über easy Spring has made it to pick the parts for your app from http://start.spring.io, define your domain, and then export them as a hypermedia-driven RESTful service.


See how to build, test, secure, and add hypermedia with this new tutorial, "Building REST Services with Spring"

Greetings Spring Community!

Today we have released a new tutorial written by Spring geek Josh Long, the man who travels the globe talking about Spring: Building REST Services with Spring

In this sleek tutorial, you can read about the simplicity and power of building RESTful web services using Spring. You’ll also see how to:

It’s a really good read with LOTS of code (you know, the important stuff). What about the existing REST tutorial? It was a bit dated on concepts we wanted to cover and state-of-the-art, so it has been retired in favor of this one.


Join us at the Spring Data birds-of-a-feather session @springone2gx #s2gx

Are you ready for SpringOne? It’s almost here!

A popular part of SpringOne are the birds-of-a-feather sessions. Different groups get together to talk about different aspects of Spring, Groovy, and Grails. This year, they are scheduled for Tuesday night, September 9th, starting at 9pm. (When do they end? When everyone finally leaves!)

They are indeed popular. Last year I sat in on the Spring Framework one and enjoyed the close, unscripted discussions (not lectures). You should think about carving out some time for that!