Spring Team
Greg Turnquist

Greg Turnquist

Test-bitten script junky & Spring Data mate

Clarksville, TN USA

Greg is a test-bitten script junky. He is a member of the Spring Data team at Pivotal. He works on Spring HATEOAS, Spring Data REST, and Spring Boot, while also working as an editor-at-large of Spring's Getting Started guides. He launched the Nashville JUG in 2010. He has written three books (including Packt's best-seller "Learning Spring Boot") and recorded the "Learning Spring Boot Video". He has been a Spring fan for years.
Blog Posts by Greg Turnquist

Spring Web Services 3.0.4 / 2.4.3 released!

Greetings Spring community,

The Spring Web Services team is releasing two version at the same time. 3.0.4.RELEASE as the main branch of development along with 2.4.3.RELEASE for maintenance.

3.0.4.RELEASE comes with a handful of features listed further below. It also comes with new support for Java 11, the next long term supported version of Java.

Java 11 and beyond

Starting in Java 9, several key Java EE packages had their visibility reduced. These included core XML and SOAP-based packages. In Java 11, these packages have been removed altogether. Since Java 11 is the first long term release since Java 8, it’s the version Spring Web Services aligns with for corresponding long term support.

What does this mean for you? To use Spring Web Services on Java 9+, you can no longer depend on the JDK providing key XML and SOAP-based libraries. Never fear, the solution is right here!

If you visit the project’s build file, you’ll discover a new Java 11 profile. This profile contains the extra dependencies you must add to your own build file in order to use Spring Web Services (or any XML/SOAP-based library for that matter).

Spring Web Services does not ship these dependencies so you’ll have to add them to your own build file. But once you do, you won’t have to worry about again (except for when newer versions of those APIs are released).

Still using Spring Web Services 2.x maintenance branch? We’ve got you covered. Without breaking backward compatibility, the 2.4.3.RELEASE also supports Java 11. It just uses a slightly older version of the SOAP API (1.3.8 instead of 1.4.0). Nothing is forced upon you, so you can continue using the same versions of everything else.

Whether or not Java 11 breaks any parts of your application outside of Spring Web Services, of course, is up to you.

For more details, read the following release notes for each version:

Read more...

Building richer hypermedia with Spring HATEOAS

Greetings Spring community,

As previously announced, we have released a new Affordances API in 1.0.0.BUILD-SNAPSHOT. In this blog post, we’ll take a peek at exactly what this feature lets you do.

History of Affordances

For starters, what is an affordance? Doing a little archeology, Mike Admundsen, a REST advocate, has an article detailing the word’s origins, going back at least to 1986:

The affordances of the environment are what it offers …​ what it provides or furnishes, either for good or ill. The verb 'to afford' is found in the dictionary, but the noun 'affordance' is not. I have made it up (page 126).
— The Ecological Approach to Visual Perception (Gibson)

It then appeared in a psychology paper in 1988:

…​the term affordance refers to the perceived and actual properties of the thing, primarily those fundamental properties that determine just how the thing could possibly be used. (pg 9)
— The Design|Psychology of Everyday Things (Norman)

Finally, it can be found in none other than one of Roy Fielding’s presentations on hypermedia in 2008:

When I say Hypertext, I mean the simultaneous presentation of information and controls such that the information becomes the affordance through which the user obtains choices and selects actions (slide #50).
— Slide presention on REST (Fielding)

In all these situations, "affordance" refers to the available actions provided by the surrounding environment. In the context of REST, these are actions detailed by the hypermedia.

In the past, when people moved away from SOAP and its action-based tactics, they have struggled to document their APIs, many unaware that Roy Fielding built hypermedia into REST for this very purpose. By including data along with the controls to not just find related data, but to also use the data is key.

With a HAL document, clients are provided very simple affordances. The links are shown but nothing else about them. What you can do with the links and what it takes to interact with them is not detailed.

Read more...

Spring Session (Core/MongoDB/Geode) 2.0.0.RC2 released!

Greetings Spring community,

In preparation for the soon-to-be GA release, Spring Session, Spring Session MongoDB, and Spring Session for Apache Geode and Pivotal GemFire have all aligned to versions 2.0.0.RC2 for this release.

In case you missed it, this is what’s included with each of the modules:

  • Core - includes support for Redis, JDBC, and Hazelcast

  • MongoDB - both traditional blocking as well as reactive support for MongoDB

  • Apache Geode - support for Apache Geode as well as Pivotal GemFire (including the PCC service with the SSC extension on PCF)

Read more...

Spring Web Services 3.0.0.RELEASE / 2.4.2.RELEASE is out!

Greetings Spring community,

Spring Web Services has released 3.0.0 for general availability as well as released a minor patch, 2.4.2.RELEASE.

As stated in the previous blog post, the 2.x series will be maintained as long as Spring Framework 4.x is supported, yet any new work will be conducted on the master branch.

The links below include related tickets.

  • 3.0.0.RELEASE:

    • Better handling of large attachments to avoid OutOfMemory exceptions.

    • Wss4jSecurityInterceptor enhancements including SAML callbacks

    • SpringSecurityPasswordValidationCallbackHandler improvement to avoid NPE from lack of a logged-in user

    • Fixes to SOAP 1.1/SOAP 1.2 message header handling

    • Fix content-type for Axiom SOAP 1.2

    • Upgrade to latest versions of AspectJ

    • Support for up-and-coming Axiom 1.3 (community contributor who wants to ensure Spring WS and Axiom 1.3 work together).

  • 2.4.2.RELEASE:

    • Backporting of the same SpringSecurityPasswordValidationCallbackHandler fix

    • Accidentally moved wss4j 2.x version too far forward to ensure stable compatibility. If you wish to use the very latest wss4j, you must move to the 3.0 version.

Read more...

Spring Web Services 2.4.1.RELEASE / 3.0.0.RC1 released

Greetings Spring community,

Spring Web Services now official has two branches: master (3.0+) and 2.x (maintenance of the old 2.x series). The 2.x series will be maintained as long as Spring Framework 4.x is supported, yet any new work will be conducted on the master branch.

2.4.1.RELEASE is a minor patch release while 3.0.1.RC1 is a major upgrade. The links below include related tickets.

  • 3.0.0.RC1:

    • Rebases Spring Web Services to run on Spring Framework 5.0 and Java 8

    • Drops support for the older Apache WSS4J 1.x line covered by the org.springframework.ws.soap.security.wss4j package. Instead, we only support WSS4J 2.x (in the org.springframework.ws.soap.security.wss4j2 package).

    • Upgrades our XMPP library Smack support to 4.2.

    • This version is planned to be picked up by Spring Boot 2.0 as well as Spring IO Platform Cairo.

  • 2.4.1.RELEASE:

    • Maintains our existing baseline of dependencies, making movements on latest supported versions of Spring Framework and Spring Security

    • We’ll maintain the 2.x version as long as Spring Framework 4.x is supported.

    • Based on several of the gaps between Spring Framework 4.x and 5.x, there will be no more compatibility checks of our 2.x branch against Spring Framework 5.x If you need Spring Framework 5, you really need to upgrade to our 3.x branch.

Read more...

Spring Session MongoDB 2.0.0.M3 released

Dear Spring Community,

Spring Session MongoDB 2.0.0.M3 is released. It is based on:

In this release, several new features have been added to simplify using it with your Spring WebFlux application.

@EnableMongoWebSession
public class SpringWebFluxConfig {

}

All you must do is apply the @EnableMongoWebSession to any of your Spring configuration classes to activate session support with MongoDB. Additionally, you must provide a ReactorMongoOperations Spring bean, but if you’re using Spring Boot’s spring-boot-starter-data-mongodb-reactive starter, this is already provided.

Read more...

Spring Session MongoDB 2.0.0.M2 released

Dear Spring Community,

Spring Session MongoDB 2.0.0.M2 is released. It is based on:

  • Spring Session 2.0.0.M3

  • Spring Data Kay-RC2

  • Reactor Bismuth-M3

  • Spring 5.0.0.RC3

This is the first milestone with Reactor support, making it usable with Spring WebFlux.

In the meantime, you can get the bits today if you visit the project site, get the coordinates, and include the version number in your Spring Boot application.

Read more...

Spring Session MongoDB 2.0.0.M1 released

Dear Spring Community,

Last month, Spring Session lead Rob Winch announced the release of Spring Session 2.0.0.M1 (notice the lack of MongoDB there?) In that post, he pared back Spring Session to officially supporting Redis, JDBC, and Hazelcast. No more MongoDB.

I’m here to announce that I’ve pick up the torch for Spring Session MongoDB. Managing both Spring Session and Spring Security (among other responsibilities), Rob couldn’t maintain high caliber support with too many data stores. Being a member of the Spring Data team, I felt better suited toward providing MongoDB support of Spring Session, so I reinstated it as a separate project.

Read more...

Spring Cloud Spinnaker 1.0.0.M3

Greetings Spring community,

I am happy to release the second milestone for Spring Cloud Spinnaker. Spring Cloud Spinnaker bundles up the continuous delivery Spinnaker platform, and provides a 1-click installer to let you install it to any certified Cloud Foundry provider.

UPDATE: This blog post originally cited M2, however one of our early adopters spotted a critical bug, so M3 has been built and released with the fix in hand.

Key features included in this release:

  • Much more simplified way to login, select your org and space from dropdowns, etc., shooting for as simple an experience as possible.

  • Ability to manage two CF spaces

  • Support for Jenkins and Travis CI monitoring.

  • Configure email and slack notifications

  • Move to hosted uber JARs, meaning installing the installer is no longer a bugbear

  • Other enhancements regarding to Spinnaker itself include ability to clone server groups, an upgrade to our Reactor-based cf-java-client 2 library, and also enhance UX showing more CF information than ever.

Read more...

Spring Web Services 2.3.1/2.4.0 are released

Greetings Spring community,

Spring Web Services has just released versions 2.3.1.RELEASE and 2.4.0.RELEASE.

2.3.1.RELEASE is a minor patch release.

2.3.1 Release Notes | 2.3.1 Documentation.

2.4.0.RELEASE rebases Spring Web Services to run on Spring Framework 4.2.x & Spring Security 4.0.x, the stable baselines behind Spring 4.3/Spring Security 4.1. At the same time, it remains compatible with Java 7. This version includes changes to the code base making it forward compatible with Spring 4.3 and 5.0, so you are free to move up to whichever version of Spring/Spring Security you wish to use.

Read more...