Hi Spring fans! Welcome back to another installment of This Month in Spring! This last month has been nuts - crazier than a sac 'o cats!
First of all, we IPO'd. That's kind of awesome. Shortly after that, we at Pivotal celebrated our 5th birthday! as a startup - happy birthday to us!
Your humble correspondent has hit the road! I started in Paris, FR and then hit New York City, NY (for the big NYSE bell ringing ceremony!); Mainz, Germany; Linz and Vienna, Austria; Melbourne, Australia (where I am now, but only after a 12 hour layover in Bangkok, Thailand); Manchester and London, UK; Denver, CO; Kyiv, Ukraine; Dublin and Belfast, Ireland; Barcelona, Spain; and then finally Singapore. That's it, for now, then I fly back home to San Francisco early in June, 2018. For the details on where and what, check out this blog post. In all of that I'll have presented with the first two founders of Spring, Rod Johnson and Juergen Hoeller, albeit in different places.
During this time I also put out the first four installments of the first season of Spring Tips videos in 2018, starting with videos on the new Kafka Streams binder for Spring Cloud Stream, Redis, the reactive Cloud Foundry Java client, and Spring Statemachine
And, of course, the Pivotal and Spring ecosystems have been moving a mile a minute so without further ado, here's what you missed in the last month if you blinked.
- Spring Cloud contributor Ryan Baxter has just announced Spring Cloud Finchley RC1. The new release is packed with all sorts of new stuff and represents one of hopefully the final releases before Spring Cloud Finchley before it's GA
- In this installment of Spring Tips I looked at how to extricate process state - valuable for coordinating long running or mutli-actor processes - from business logic with Spring Statemachine
- the RabbitMQ 3.7.5-beta2 is now available.
- I really like this Chinese-language post on whether Spring Boot and Spring Cloud can be used by small and medium-sized companies
- The RabbitMQ blog has a nice post on using the Micrometer integration in the RabbitMQ Java client to integrate with Datadog
- Jeroen Reijn gave a nice presentation on test-driven Spring REST Docs-based documentation
- The Ordina blog has a nice post on using Spring Cloud Contract to support consumer-driven contracts.
- I love this post by Gaurav Gupta on synchronous request/reply with Apache Kafka and Spring
- The Baeldung has another interesting post (related to Servlets) that looks at the
@ServletComponentScan
in Spring Boot: it detects all Servlet APIWebFilter
,WebListener
, andWebServlet
annotations on servlet components. - This is an oldie-but-a-goodie from the Baeldung blog: a Quick Intro to the
SpringBootServletInitializer
, which is the mechanism that let's Spring Boot applications run in a Servlet container setup, as opposed to a fat-.jar
. - Do not miss this new guide on Spring Cloud Gateway
- Bartosz Jedrzejewski put together a nice post on using Reactor (in a Spring WebFlux application) to obtain parallelism and backpressure
- And yet another Baeldung post, this time with a review of the state of Java. The numbers in this year's survey are very interesting! The numbers are very promising: Java 8 is now, by far, the majority deployed version of Java. Java 9 and 10 are gaining ground, though! Also interesting: Spring Framework 4 and Spring Framework 5 are are, by far, the majority deployed enterprise Java framework. The precise numbers aren't clear, but it looks to be almost 75% of the pie-chart. Java EE and "Other" technologies account for what I'd guess is 20% of the remaining deployments, followed by Spring Framework 3, which looks to be about 5% or so (Maybe less?) Of the deployments that are based on Spring, a majority are based on Spring Boot, with less than 20% or so based on Spring without Spring Boot. IntelliJ, Apache Tomcat, and Maven are the clear leaders, too. Also interesting: Groovy, Kotlin and Scala (in that order) are the leaders in non-Java languages.
- The Heroku documentation has a great list of steps that are required to make a Spring Boot application cloud-ready. This blog was published on the Heroku blog but a lot of it applies to building cloud-native applications for any platform
- This post demonstrates how to test in a Spring application without Spring. It sets up a scenario that should be very uncommon, field injection, and demonstrates how adversely this affects the goals of testing. Remember what I always say: "every time you do field injection, a unit test dies!" The post then looks at how to test components, and to even remove Spring from the testing process.
- Nicolas Frankel looks at changes in Spring Boot 2's Actuator
- I love this cheat sheet on using Java 10
- The Spring Cloud team is hiring! Join us!
- Michael Simons and Michael Plöd put together a nice German-language slidedeck on Spring Boot 2
- The All and Sundry blog has a nice post on configuring a simple route with Spring Cloud Gateway
- Part two of my series on building reactive Spring-based applications is now available in Java Magazine
- The Java Revisited blog has a nice post on the motivations for pursuing certification in Spring Cloud
- The call-for-papers for the inaugural RabbitMQ Summit on November 12th, 2018 at CodeNode in London, UK is now open!
- If you use a separate repository to store Spring Cloud Contract definitions, by adding a small test, you can sketch the graph of dependencies between your projects! See this issue for more
- This post looks at how to autoscale Cloud Foundry applications by investigating RabbitMQ queue depth. This is awesome; it's one less thing that needs to be in the book Cloud Native Java where we demonstrated how to do this exact thing using a Spring Cloud Data Flow RabbitMQ metrics source and a Cloud Foundry autoscaler sink
- Use CF Local to get a local Cloud Foundry-like development experience
- Spring IO lead and Spring Boot legend Andy Wilkinson has announced the Gradle dependency management plugin, 1.0.5.RELEASE, that is now available from Maven Central, Bintray, and the Gradle Plugin Portal. This maintenance release fixes a handful of issues. It was included in the recent Spring Boot 1.5.12 and 2.0.1 releases and is also a recommended upgrade for all other users of the plugin.
- The good Dr. Mark Pollack has just announced Spring Cloud Data Flow 1.5.M1. The new release is hot-sauce! It includes Spring Boot & Spring Cloud Stream 2.0 Support; nested splits for Composed Tasks, metrics Collector 2.0 M1; the stream application starters Darwin M1 release train has been included; and it has support for deploying to multiple Kubernetes clusters.
- There's an upcoming webinar on Spring Session, tomorrow, April 25! Do not miss this!
- Spring Cloud Stream Kafka Streams maestro Soby Chacko looks at the new support in this must-read blog post.
- Spring Data legend Christoph Strobl looks at the new MongoDB support for client-sessions and transactions and its impact in Spring Data MongoDB.
- Hi Spring fans! In this latest installment of Spring Tips we look at the many ways to use Redis, the distributed data-structure server, with Spring and Spring Data.
- Spring Tool Suite 3.9.4 updates to Oxygen.3.a, Java 10 and Pivotal tcServer 4.0.0.
- Spring Integration expert extraordinaire Artem Bilan announced Spring Integration for AWS 2.0.0.M2 and Spring Cloud Stream Kinesis Binder 1.0.0.M2
- InfoQ's Daniel Bryant has a nice post on the new Spring Cloud Stream release
- Piotr Minkowski has a nice post that looks at how to deploy Spring Cloud Microservices on Hashicorp's Nomad container scheduler
- Spring community legend Aboullaite Mohammed explores the "magic" behind Spring Boot's auto-configuration
- I joined the Pure Performance podcast, episode 60, by Dynatrace. In this discussion we talk about all things cloud-native and Java and monitoring. Enjoy!
- Jonas Hecht has a nice post on using Spring Boot and Vue.js together
- [The RabbitMQ Summit Call For Proposals]](https://rabbitmqsummit.com/) is now open, closing June 1
- This is an oldie-but-a-goodie: how to address eventual consistency for microservices using Spring AMQP and RabbitMQ
- Hat tip to Spring and Kotlin artiste Sebastien Deleuze for surfacing these two projects by Jordan Demeulenaere: Komponent for creating WebComponents, and Klient for generating multiplatform Kotlin HTTP clients from Spring MVC controllers
- JUnit 5.2 is almost here. Junit 5.2 RC1 was released today and contains only documentation changes compared to 5.2 M1. 5.2 GA is scheduled for next Sunday, April 29.
- Matt Raible's epic talk, Bootiful Development with Spring Boot and React, is now available online!
- The Baeldung blog has a nice post on the
@Lookup
-annotation and the dependency lookup mechanism in Spring Framework. - Techcrunch has a nice post detailing some of the ways Cloud Foundry and Kubernetes have grown closer. The post looks at some of the things to come out of CF Summit last week.
- Our very own Toshiaki Maki has a quick-n-dirty example on Github of using the just open-source FoundationDB with Spring WebFlux.
- I loved the slides to Tomasz Nurkiewicz's talk on reactive programming (in this case, with Spring WebFlux)
- Hussein Terek has a nice post on using Spring Boot, Oracle, JPA (via Hibernate) together in this post
- Yitao Dong, program manager for Java on Microsoft's Azure cloud platform, introduces Spring Data Azure Cosmos DB which supports the Microsoft Azure multi-model NoSQL data store, Cosmos DB.
- I really liked the slides from Simon Basle's talk introducing Reactor
- Spring Cloud co-founder Spencer Gibb teases some of the fascinating possibilities for the Spring Cloud Consul integration now that Consul supports real service metadata. What do you think?
- As Dormain says in the tweet: "2018 is the year of the CloudFoundry in government. Cloud.gov is now a certified platform! More to come :D" 'Nuff said!
- This is an oldie-but-a-goodie; it's an explainer on the "Poutsma principle," named for Spring legend Arjen Poutsma (if you've ever used Spring, Spring MVC, Spring WebFlux, Spring WS, Spring Faces, the
RestTemplate
and a zillion other things, you've used his code!). - The Register ("El Reg") have a nice article that looks at Project Riff, the open-source function-as-a-service platform from Pivotal that builds atop Kubernetes.
- Spring Cloud Finchley, the reactive release train for Spring Cloud, is coming!
- Spring Data mad-scientist Thomas Darimont has a really compelling Spring Boot 2.0 and Keycloak-based OAuth example on his Github account.
- I love tweets like this one which explains that RabbitMQ still powers Wunderlist - cool!
- Spring Cloud Task and Spring Batch lead Michael Minella just announced Spring Cloud Task 2.0.0.RC1
- Artem Bilan looks at what's new in the Spring Cloud GCP 1.0.0.M3 release.
- Spring Tool Suite lead Martin Lippert just announced Spring Tool Suite 3.9.4
- Spring Boot lead Phil Webb is cooking up a very interesting project to ensure code-formatting consistency for all Spring Boot projects. Interesting! (and still super early days yet..) Think of this as the Java and Spring Boot equivalent of
gofmt
. - Spring Data ninja Mark Paluch just announced Spring Data Lovelace M2. This release ships with updates for all store modules that contain new features, improvements, and bug fixes. Notable changes include: MongoDB 3.6 support for Change Streams, $jsonSchema, and Client Sessions (in preparation for MongoDB Transactions); Apache Cassandra mapping improvements for Map and Tuple Types, along with newly introduced Lifecycle Callbacks; Upgrade to Apache Solr 7; Improved Connection Handling for reactive Redis and static Master/Slave use; SCAN support for Redis Cluster; List support for Spring Data JDBC; Composable repositories support via CDI; and an t increment to Spring Data Solr to a new major version number, 4.0 M2, as we upgraded from SolrJ 6.6.2 to 7.2.1.
- There's some interesting changes afoot in the programmatic bean definition Kotlin DSL! The new DSL supports injecting multiple bean definitions and accessing the Spring
Environment
, among other things. - Springg Security OAuth lead Joe Grandja just announced Security OAuth 2.3.2.RELEASE fixing a minor runtime incompatability with Redis
- Our very own Jakub Pilimon has a nice post on "event-storming with a splash of domain-driven design."
- Spring Data ninja Mark Paluch shares details on new releases of Spring Data - Spring Data Ingalls SR11 and Kay SR - which include fixes for recently announced vulnerabilities. If you're using Spring Boot 1.5.12 and 2.0.1 then they bring in the appropriate Spring Data releases, as well
- Hi Spring fans! Last week, in the latest Spring Tips installment, I look at the reactive Cloud Foundry Java client
- This is a list of must-read books for Spring developers in 2018.
- Jenkins X is a new offering from CloudBees that supports smart continuous delivery of applications. In this example it offers an integrated CI/CD pipeline for Spring Boot
- The Flowbable BPMN engine has a nice post on the journey they took to Spring Boot 2.0 support
- This new project - Chaos Monkey from Spring Boot - from Codecentric supports the principles of chaos engineering in Spring Boot-based services. It helps you answer questions that your tests don't, like: "will our fallbacks work?"; "how does the application behave with network latency?"; "what if one of our services breaks down?"; and "Service Discovery works, but is our client-side-load-balancing also working?" If Spring Boot Chaos Monkey is on your classpath and activated with profile name
chaos-monkey
, it will automatically scan your application for all classes annotated with any of the following Spring annotations:@Controller
,@RestController
,@Service
, and@Repository
. Then, you configure different "assaults" which will, well, assault your components and try to break them. This is so cool! - This is an exhaustive review of a simple concept: how to change the context-path of a Spring Boot application
- I love this image, "Deployment g-forces," that illustrates what things most support continuous delivery
- Jeff Kelly over on the Built to Adapt blog has a really nice post on how Mercedes-Benz uses Pivotal Cloud Foundry to handle their usecases
- Check out the following Spring meetup in Minneapolis, MN at 5:30 on April 23, 2018 on serverless and Spring Cloud Function
- The E4Developer blog has a nice post on the request processing lifecycle for Spring WebFlux
- Spring and Kotlin ninja Sebastien Deleuze has a nice post on testing reactive Spring WebFlux-based web applications with Spring and Kotlin
- Our very own Daniel Frey has a really nice event-sourcing example with Kafka Streams
- Mimacom have a very nice post on using Spring Cloud Contract
- I love this post on consumer driven contracts (by example) with Spring Cloud Contract
- Maciej Walkowiak surfaced an oldie-but-a-goodie: SpringSource co-founder Keith Donald on the origins of SpringSource, the company eventually accquired by VMWare which ultimately spun out to become a part of Pivotal.
- I haven't tried this out yet, but it looks like you can now add
@RefreshScope
to ajavax.sql.DataSource
@Bean
definition and it'll automatically be re-configured? If so, that's super cool! - Pivotal's own Matthew Parker has a nice post on the benefits of test-driven development
- The Google Cloud Platform blog has a nice post on the Spring Cloud GCP support, too
- The Spring Cloud GCP starters are now on the Spring Initializr!
- The Docker blog has a nice post on containerizing Spring Boot applications. Cool.
- The E4developer blog has a worthy read: "Getting Reactive with Spring Boot 2.0 and Reactor."
- Do you have your tickets for the Spring Connect São Paulo event on June 26th? I'll be there and I'd love to see you!
- RabbitMQ have a nice blog on how they support capturing client-side metrics with Micrometer
- This is a good list on must-read books for Spring developers
- Christoph Strobl has teased the forthcoming Spring Data MongoDB support for transactions and it's exciting!
- Wijnand Top has an interesting post on how to use GitLab’s Auto DevOps for a Spring Boot application. Auto DevOps, as I understand it, is basically a made-to-order continuous delivery platform. This is cool!
- Jonatan Reiners has a nice post on using the Azure KeyVault as a property source in Spring Boot
- There's a new Spring Integration 5.0.4 release.
- Spring IO Platform lead Andy Wilkinson has just announced Spring IO Platform Brussels SR9 which contains updated versions of Spring Boot and Spring Framework 4.3.16.
- Spring Cloud Stream lead Oleg Zhurakousky has just announced Spring Cloud Stream 2.0. The new release contains a lot of improvements so definitely read the blog. I also did a Spring Tips installment on one of the new features, Spring Cloud Streams Kafka Streams
- Spring Boot lead Phil Webb has just announced Spring Boot 1.5.12 which is a recommended update for all Spring Boot users. It includes the updated Spring Framework release which in turn addresses a recent CVE.
- Spring Framework ninja Rossen Stoyanchev has just released an updated Spring Framework release to address CVE 2018 1270. Upgrade ASAP!
- Spring IO Platform lead Andy Wilkinson has just announced Spring IO Platform Cairo-RELEASE. The Cairo generation of the Platform builds on top of Spring Framework 5.0 and Spring Boot 2.0 and requires Java 8.
- Spring IO Platform lead Andy Wilkinson has just announced that the Spring IO Platform project will end twelve months from today, 9 April 2019, and that the project will be moved to the attic. Maintenance releases of both the Brussels and Cairo lines will continue to be published up until that time.
- Spring Framework ninja Rossen Stoyanchev has announced fixes for mutliple CVEs related to the Spring Framework. Upgrade now!
- Spring Cloud Stream legend Soby Chacko reminds us that the samples have been updated in preparation for Spring Cloud Stream 2.0 release
- Spring Boot ninja Stéphane Nicoll has just announced the first maintenance release of Spring Boot 2 which includes over 160 fixes, improvements and dependency updates.
- Spring Security ninja Joe Grandja just announced Spring Security 5.0.4 and 4.2.5. Both releases primarily deliver bug fixes and dependency version updates along with some minor improvements.
- Spring Boot ninja Stéphane Nicoll just announced Spring Boot 1.5.11 which includes over 70 fixes, improvements and dependency updates.
- Spring Vault lead Mark Paluch just announced that Spring Vault 1.1.2 and 2.0.1 have been released. Bot releases primarily deliver bug fixes and dependency version updates along with some minor improvements.
- Spring Data ninja Mark Paluch has just announced Ingalls SR11 and Kay SR6 service releases. The Ingalls service release ships on top of the just-released Spring Framework 4.3.15 and in preparation of the upcoming Spring Boot 1.5.11 release. The Kay service release picks up Spring Framework 5.0.5 and will be picked up by Spring Boot 2.0.1 for your convenience.
- Spring REST Docs lead Andy Wilkinson has announced a recommended upgrade for all Spring REST Docs 2.x users.
- And, not one to rest on his laurels, Spring REST Docs lead Andy Wilkinson has also announced a maintenance release that includes a handful of bug fixes and documentation improvements for all Spring REST Docs 1.x users
- In this first Spring Tips installment for the year (!!) we look at Spring Cloud Stream Kafka Streams. Apache Kafka Streams supports Spark-like stream processing in your JVM-based code. You manage the clustering, and Kafka manages the rest. You don't need to deploy a dedicated Spark cluster to get the benefits for stream processing with Apache Kafka Streams. Spring Cloud Stream Kafka Streams makes it simple to, in typical, concise Spring Cloud Stream fashion, configure Spring Cloud Streams and Apache Kafka Streams. In this video, we look at some of the details for stream processing including
KStream
s andKTable
s, joining, serialization and de-serialization, and more. - I like this long-ish article by Adrian Marszałek on reactive microservices with Spring Boot 2 and Kotlin
- This is an oldie-but-a-goodie: Andrew Fitzgerald has a nice post on using Spring Cloud Gateway with a Cloud Foundry route service
- There's a lot to love in the new
cf
CLI command. Check out this blog for all the details. Did you know that thecf
CLI is now 700% faster in some cases? - Simon Moser has put together a nice history of Cloud Foundry and Kubernetes. This is a really interesting read!
- Neo4j evangelist extraordinairre Jennifer Reif has a great post on using Spring Data Neo4j and Spring Boot - do NOT miss this post!
- The legendaryy Aboullaite Mohammed has put together a very cool post on using Spring Boot and the Micrometer project with the TICK stack: Telegrap/InfluxDB/Chronograph/Kapacitor.
- I loved this post. It explains how one developer, Andrei Chernyshev, moved a Kotlin-language based Spring Boot application from JVM 8 to JVM 10.
- Spring Security lead Rob Winch has a great talk up on InfoQ on the reactive bits in Spring Security 5
- Want to speak at SpringOne Platform 2018? Submit your talk tout-de-suite! CFP's closing soon!
- Project Riff, the function-as-a-service platform from Pivotal, have just announced Riff 0.0.6. Get the bits ASAP!
- Micrometer lead and master-of-metrics Jon Schneider has a great example of embedding the Netflix Atlas project in a Spring Boot application
- Flowable 6.3.0 release has been updated to use Spring Boot 2.0
- Java Champion and Java legend Simon Maple has been blogging about security for Java applications on Cloud Foundry. Check this out!
Saving money is so in these days—and so is SpringOne Platform. Discounted registration and reduced training prices for the latter end on August 1, 2018 at 11:59 p.m. (PDT). Register now—before it's too late!—and save $200.
About the Author
Follow on Twitter Visit Website More Content by Josh Long