The Spring Blog

Engineering
Releases
News and Events

Spring Integration 5.0 Milestone 3 Available

The Spring Integration team is pleased to announce that the third milestone for the Spring Integration 5.0 release (5.0.0.M3) is now available.

53 JIRAs (and some GitHub issues) made into this release, including bug fixes and a number of new features. Some highlights since the previous Milestone 2:

  • Initial implementation for a Spring Integration Testing Framework - the @SpringIntegrationTest annotation for test classes and MockIntegration factory help you to write unit tests for integration flows and channel adapters. We intend to flush out this capability with more features before GA, including more mocking, verifications and some send-and-receive utilities to test components in isolation. Feedback is welcome!

  • POJO handler method invocations (@ServiceActivator, @Transformer etc., or such methods invoked from XML definitions) now use InvocableHandlerMethod by default. Together with the ConfigurableCompositeMessageConverter and @Default utilities that allows us to implement conditional method invocation scenarios based on the Content-Type and target method arguments resolution. To restore the previous SpEL-based behavior, the @UseSpelInvoker method-level annotation is provided.

  • A based on the WebFlux WebClient ReactiveHttpRequestExecutingMessageHandler implementation is provided. Together with a ReactiveChannel as an outputChannel options it provides backpressure manner for remote HTTP service consumption.

  • The (S)FTP (and AWS S3) Inbound Channel Adapters can now restore file tree locally. For that purpose a new, Files.walk() based, RecursiveDirectoryScanner is introduced. The useWatchService option is also provided.

  • Web Services Gateways now can exchange WebServiceMessage s directly as the inbound/outbound payload. This allows the support of MTOM via direct access to WebServiceMessage properties. The UnmarshallingTransformer can now process a MimeMessage as the payload to unmarshal it into an object graph with attachments.

  • The reply producing MessageHandler now has a fallback to the replyChannel header from the reply message, if there is no outputChannel or replyChannel in the request message headers. This allows the implementation of business process-like scenarios when the next step is determined by the result of current calculations.

Read more...

Spring Boot's new Gradle plugin

One of the main themes of Spring Boot 2.0 M1 is a range of significant improvements to its Gradle plugin. Many of those improvements have just been merged and are available in the latest Spring Boot snapshots. There’s a few weeks until Spring Boot 2.0.0.M1 will be released at the beginning of May and we’d love to hear your early feedback on the new plugin before then.

You can read more about the plugin’s capabilities in its reference and API documentation.

Trying the new plugin

The new plugin requires Gradle 3.4 or later. Like the rest of Spring Boot, snapshots are published to https://repo.spring.io/libs-snapshot. The easiest way to use a snapshot is to create a new Gradle project on start.spring.io and select Spring Boot 2.0 snapshots.

Read more...

Spring AMQP 2.0.0 Milestone 3 is Available

We are pleased to announce that the third milestone for the Spring AMQP 2.0 release (2.0.0.M3) is now available.

36 JIRA Issues are included in this release, including bug fixes and a number of new features:

  • Initial support for broker-less integration testing - the TestRabbitTemplate discovers listener containers in the application context and invokes those containers' listeners for send() and sendAndReceive() operations. We intend to flush out this capability with more features before GA, including routing, and simulation of the various exchange types supported by RabbitMQ. Feedback is welcome.

  • Rollback with an external transaction manager is now consistent with local transactions.

  • The 4.1.x amqp-client library is now the default.

  • The RabbitTemplate now has an invoke() method which allows multiple operations to be performed sequentially on the same channel. This also enables features such as waitForConfirmsOrDie() provided by the underlying library, when sending multiple messages to the same channel.

  • null message properties are no longer included in toString() which makes debug logs easier to read.

  • @QueueBinding annotations now support multiple routing keys, and support custom exchange types.

Read more...

This Week in Spring - April 4th, 2017

Welcome to another installment of This Week in Spring! This week I’m in London, UK; Paris, France (for the epic Devoxx France event where I’ll be speaking with my buddy Matt Raible) and Stuttgart, Germany, where I’ll be speaking at conferences and to customers! If you’re around, don’t hesitate to say “hi”!

Read more...

Spring Team and Pivotal at OSCON Austin 2017

Join the Spring Team and Pivotal experts at OSCON Austin May 10-11, 2017!
Pivotal will be at booth # 104
9:45am - 7:00pm on Wednesday May 10
9:45am - 4:30pm on Thursday May 11

We will have experts available to talk to you about leading open source projects like Cloud Foundry, Spring Framework, Apache Tomcat, and much more. Stop by and learn about Cloud Native applications from the leaders at Pivotal.

Don’t miss these talks on Cloud-Native applications, Microservices, Cloud Foundry, Product Management and much more!

Read more...

Spring Tool Suite 3.8.4 released

Dear Spring Community,

I am happy to announce the 3.8.4 release of the Spring Tool Suite, our Eclipse-based tooling.

Highlights from this release include:

  • updated to Eclipse Neon.3
  • completely revamped wizard for direct access to start.spring.io
  • boot dashboard: support for local Spring Cloud CLI services
  • boot dashboard: support for routes when deploying apps to CF
  • fixed font rendering on main STS dashboard
  • added support for Buildship 2.0
  • improved reliability for boot dashboard when showing status of running boot apps
  • issue tracking moved to GitHub Issues
Read more...

This Week in Spring - March 28th, 2017

Welcome to another installment of This Week in Spring! This week I’m in Omaha, Nebraska, speaking to customers and tonight I’ll be presenting at an event co-sponsored by the Omaha, JUG and the local Omaha, Spring Users Group, talking about reactive Spring. Don’t be shy, come out and say hi!
* Sébastien Deleuze just introduced the 1.0.0.M1 relese of extensions supporting using Project Reactor in the Kotlin language
* Spring REST Docs lead Andy Wilkinson just announced Spring REST Docs 1.2.0.RC1. Try it out now! For a good example of Spring REST Docs, scroll down and you’ll see a very nice one from a community member.
* Spring Cloud Data Flow contributor and all-around great human Thomas Risberg
just announced Spring Cloud Data Flow 1.2.M3
* last week, continuing the Spring Tips series, I looked at the various options for deploying Spring Boot applications to Servlet containers
* Going beyond the Spring Boot intelligent defaults? Need to debug to that next level? Join Nicolas Fränkel, Hybris as he takes us under the hood of Spring Boot on Thursday April 13th.
* it’s still not too late to register for wednesday’s webinar with Michael Plod (InnoQ) on Strategic (Domain Driven) Design with Spring Boot
* Spring Cloud co-founder Spencer Gibb is at it again, this time working on a new Gateway project called Spring Cloud Gateway. This project is nowhere near finished or final, but now’s a great time to get the bits, kick the tires and feedback. Spencer’s been working hard adding all sorts of cool things, like request throttling.
* there are still some very interesting things that you can do with Netflix’s Zuul, too! If you want to learn more, check out the ever-expanding repository full of samples
* Jenn Strater did a really nice job demonstrating Spring RESTDocs in this example.
* Finally! a proposal to deprecate (but of course never absolutely remove) Java’s finalization behavior
* My training course, Cloud Native Java, is now available on Safari and for purchase.
* I liked the most recent installment of Pivotal Conversations which discusses the CRE program speared by Pivotal and Google to ensure that Pivotal Cloud Foundry on Google Cloud Platform delivers a Google-level of reliability
* Venkat Rangasamy has an interesting post on Production-Ready Microservices that talks about, but doesn’t focus on, Spring Boot
* I liked this Italian-language post by Federico Paparoni on using the Spring Boot Actuator for metrics
* Pivotal’s own Richard Seroter looks at using a single service registry to talk to coordinate both .NET and Spring Cloud-based Microservices
* I also liked this Federico’s Italian-language post on supporting CRUD with Spring Data REST and Spring Data JPA

Read more...

Webinar April 13th: Spring Boot Under the Hood

Speakers: Nicolas Fränkel, Hybris

With the Spring Boot stack you can kickstart your Spring project in a matter of minutes. For both developers using Spring and microservices adopters, Spring Boot has been a resounding success.

Favoring Spring Boot over the traditional Spring framework comes at a cost, you have to let Boot be in control and it might hurt when you decide to get back in the driving seat.

Come to this 60 minute webinar and discover how auto-configuration and the different flavors of conditionals work through the creation of a Spring Boot starter. You’ll come away with an understanding of Spring Boot internals, how to debug better, and be able to develop your own starter.

Read more...