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

Building a RESTful quotation service with Spring

I was recently made aware that a public API we were using for one of our guides contained objectionable material. After confirming this, I immediately responded that we would pick another source. Wishing to avoid such an issue in the future, I decided the best solution was to build our own RESTful quote service. So I decided to use the best tools to do so, the Spring stack, and was able to migrate the very next day.

Picking your tools

To kick things off, I made a check list of what I knew would be the right tools for the job of creating a RESTful web service.


Spring Data REST now comes with ALPS metadata

With the recent release of Spring Data's Evans M1 milestone, Spring Data REST now comes with support for ALPS metadata to describe the semantics of the resources exported.

ALPS is a data format for defining simple descriptions of application-level semantics, similar in complexity to HTML micro-formats. It also supports adding its metadata to existing media types. As of version 2.2 M1, Spring Data REST exposes JSON based ALPS resources that can help us navigate its resources. Let's see how!

We can start with a quick example. If you clone the TODO repo and run mvn spring-boot:run, you can navigate it to learn its values pretty easily.


First community-written getting started guide is published

Greetings Spring community,

Today we have just published the first getting started guide written and submitted by a community member: Producing a SOAP web service.

Maciej Walkowiak crafted a guide that served his needs and decided to contribute to the community. It lined up with expressed interest in such a guide from others. Maciej used https://github.com/spring-guides/getting-started-guide as his template and submitted a pull request to it containing his crafted guide.

We were able to merge all of his commits into an independent repository, apply some editorial polish, and after final review, get it published today.


Using new when.js 3.2.2 to build a front end for Spring Data REST

Greetings Spring community!

Roy Clarkson and I are presenting a talk at this year's SpringOne 2014 conference called Spring Data REST - Data Meets Hypermedia. We will explore how to quickly bridge the gap between a powerful Spring Data backend and a hypermedia enabled, RESTful front end.

In one part of the talk, we will delve into a javascript front end that lets the user takes pictures and upload them to a website. The website turns around and fetches images from the back end. By itself, this isn't that difficult thanks to the fully loaded RESTful API provided by Spring Data REST.


Getting Started with Spring Data REST

Hot on the heels of Spring Data's Codd GA release, there is a new Getting Started guide for Spring Data REST, Accessing Data with REST. It shows you how to create up an application with a JPA backend and a RESTful, hypermedia-driven front end.

Spring Data REST does all the heavy lifting of building a powerful RESTful front end as well as writing the JPA queries for the back end. To top it off, the guide leverages Spring Boot so you are using the latest-and-greatest from the Spring team.



It's easier than ever to create or contribute to a Getting Started Guide

Greetings Spring community!

We keep receiving feedback that Spring's Getting Started Guides are smash hit.

So far, we've migrated these guides to Asciidoctor. We have also grown our guides to include client-oriented ones. More are coming!

The final link in the chain of making these guides work in the long term are the navigational links in the sidebar of each guide. We are now using metadata to tag and link various guides together while also connecting them to relevant projects.

For example, if you visit Consuming a RESTful Web Service with AngularJS, you will see a sidebar that contains:


Spring's Getting Started Guides migrated to Asciidoctor

"If Markdown is a 1st-grader, then AsciiDoc is a PhD student."[sic] -- Dan Allen, project lead of AsciiDoctor

We recently migrated all of our Getting Started Guides to Asciidoctor. Why? Because Asciidoctor provides so many valuable features!

  • Several built in directives make it possible to pull in entire code files, small fragments of code, and external chunks of reusable content.
  • Rendering is now embedded into spring.io's website.
  • No need to "generate" the guide, which always puts you at risk of being out of sync with the code, the build files, and the document itself.
  • Lines up with how many of our projects are migrating away from DocBook towards AsciiDoctor to reduce maintenance.

Empowering your apps with Spring Boot's property support

Spring Boot is continuing to gather steam. Last month I wrote Contributing to Spring Boot with a pull request. I peeled back the layers of Spring Boot to demonstrate it's incredible autoconfiguration features and CLI support.

In this post, I want to dig into Spring Boot's amazing support for properties. Properties are something that are small, not highly visible, yet can quickly strengthen your application in very practical ways. In this post, I'll walk through how I added property support to the Spring JMS support I coded in the previous blog post.


Contributing to Spring Boot with a pull request

In case you missed this year's SpringOne 2GX conference, one of the hot keynote items was the announcement of Spring Boot. Dave Syer showed how to rapidly create a Spring MVC app with code that would fit inside a single tweet. In this blog entry, I will peel back the covers of Spring Boot and show you how it works by putting together a pull request.


Spring Boot has a powerful autoconfiguration feature. When it detects certain things on the classpath, it automatically creates beans. But one feature it doesn't yet have is support for Spring JMS. I need that feature!


Spring Python 1.1.1, 1.2.1, and 1.3.0.RC1 are released!

Amidst the flurry of Spring releases this month, Spring Python has it's own.

Versions 1.1.1 and 1.2.1 are maintenance releases that patch some bugs. Version 1.3.0.RC1 is the first release of 1.3.0.

In this release we have commits from team members, and have also merged pull requests through github. If you want to make contributions to this project, don't forget to sign the contributor license agreement.


The Spring Python team

Release Notes - Version 1.1.1