This Week in Spring - May 13th, 2014

Engineering | Josh Long | May 13, 2014 | ...

Welcome back to another installment of This Week in Spring! This week I'm in Krakow, Poland for Geecon, the Polish developer conference where, of course, I'll be speaking to developers about Spring. (and, maybe, Spring). If you're around, find me, I'll be wearing the giant Spring leaf t-shirt! :)

Other than that, there's a lot to get through so let's get to it!

  • In preparation for the upcoming Spring IO Platform, Spring Data release train Dijkstra has been released! This is a tremendous release train that includes: JPA, MongoDB, Neo4J, Apache Solr, Couchbase, Cassandra, Elasticsearch, Gemfire, Redis and Data REST! Congrats to the Spring Data Team!
  • Spring Boot 1.1.0 M1 is now available and introduces MongoDB and Gemfire support, as well as improved actuator metrics and health endpoints.
  • Final maintenance releases for the Spring Framework 3.2.x and 4.0.x versions are now available!
  • Spring Integration ninja (rockstar!) Artem Bilan put together a nice post introducing all the amazing Java configuration support in the nascent Spring Integration Java configuration DSL, which builds upon the basic @EnableIntegration support available in the just-released Spring Integration 4.0. You should read that post. Seriously. I want to steal some of Artem's thunder by excerpting this one amazing code-snippet:

    java @Bean IntegrationFlow helloWorldFlow() { return IntegrationFlows.from("helloWorldInput") .filter("World"::equals) .transform("Hello "::concat) .handle(System.out::println) .get(); } Yep! That's a Spring Integration flow that handles input messages, filters them, transforms them, and then gives them to the escape-hatch method, handle, which lets the developer insert any behavior into the mix. Remember, you can change anything about this - including where it gets the messages from and where it writes the messages to. Indeed, the output of one flow could be the input to another. Congratulations, Spring Integration team! Also, make sure to check out the launch webinar replay!

  • I know I mentioned this last week, but it's so worth a re-read! Groovy 2.3.0 is here! (Hah! Gotcha! This week's link was to a different post by the same author on the subject of the Groovy 2.3.0 release! But aren't you glad you read it, anyway?) Go, Groovy, go!
  • My pal Pieter Humphrey has done a nice introductory screencast on Spring XD - showing how to get up and running doing stream processing, and wiring it to an analytics dashboard in less than 7 minutes. XD uses a deceptively simple DSL (domain specific language) and no Java code - it's never been easier to work with Hadoop.
  • Spring Security lead Rob Winch has been moving heaven and earth to make unit-testing secure applications easier than ever. In this first installment of a new series, Rob looks at new annotations designed to stand in place of a live-fire Spring Security apparatus to mock a Principal, a UserDetailsService, and more. Check it out and stay tuned for more!
  • Speaking of Rob Winch, he gave an epic introduction to Spring Security at SpringOne2GX 2013 last year. This is a perfect place to jump onboard if you're new to Spring Security.
  • New Relic's Ashley Puls was kind enough to do a webinar with your humble author on Web Application Diagnostics using New Relic. Thanks, Ashley! I'll be very honest, this webinar was super informative for me. I knew just a little about New Relic, and in working through the development of the webinar I learned about a zillion and five use cases that are well served by New Relic. Really cool stuff!
  • Also published this week - a SpringOne2GX 2013 Replay by Emad Benjamin and Guillermo Tantucho: Virtualizing and Tuning Large Scale Java Platforms. This goes over JVM memory tuning and all the tricks and tips for getting Java to run well on a virtualized environment.
  • SpringOne2GX 2013 replay - a great talk from SAS Software: Migrating from WebLogic, WebSphere, JBoss to Pivotal tcServer. This might go well with a recent post on why App Servers are dead by Eberhard Wolff.
  • Do you love Spring's new home on the web, spring.io, as much as I do? Want to learn more? Check out this talk by project lead and Spring ninja Chris Beams on the makeup of the site, its development, and deployment.
  • Last week, Spring Data Neo4j lead and graph-ninja Michael Hunger and I gave a talk on Spring Boot and Neo4j. This talk was fun for me because it gave me a lot of excuses to play with Neo4j. In point of fact, Michael and I are doing a webinar on about the same subject on the 20th of May (that's 7 days away!), so come see what we've come up with. In the meantime, you may want to check out this recent post on creating a time-tree with Cypher, the language that Michael works on that's used to drive interactions with Neo4j. That post was, of course, a response to another post that Michael put together on importing forests into Neo4j, also worth a read!
  • I quite liked this post introducing how to setup a Spring Batch job using Spring Boot. The author found a comfortable configuration-middle ground in the Groovy BeanBuilder support, and describes it nicely in this post
  • Moritz Schulze has put together a very nice post, following others in the series, on how to integration test REST services
  • Are you using Spring Boot and want to use Spock? Netflix engineer Tomas Lin has put together an example on his GitHug page. Check it out!
  • Jakub Kubrynski has put together a nice post on how to use Spring Boot's org.springframework.boot.actuate.system.ApplicationPidListener (which Jakub contributed - thanks Jakub!) - to work with the application's process identifier (PID). Nice!
  • Meltdown 1.0.0 has been released! Meltdown is a Clojure interface to the Reactor project. So... functional programming and stream processing inside a lisp-like language? A dream! Check it out!

Preview Spring Security Test: Method Security

Engineering | Rob Winch | May 07, 2014 | ...

[callout title=Updated March 31 2015]This blog is outdated and no longer maintained. Please refer to the Test Section of the reference documentation for updated documentation. [/callout]

On Monday I announced the release of Spring Security 4.0.0.M1. This is the first of a three part blog series introducing the Spring Security Testing support. The series outline can be seen below:

Spring Tool Suite and Groovy/Grails Tool Suite 3.5.1 released

Engineering | Martin Lippert | May 06, 2014 | ...

Dear Spring Community,

we are happy to announce a minor maintenance release of our Eclipse-based tooling today: The Spring Tool Suite (STS) 3.5.1 and the Groovy/Grails Tool Suite (GGTS) 3.5.1.

This maintenance release includes a number of bug fixes as well as a few updates, including:

  • added Java8 support for faceted web projects
  • updated Maven Integration for Eclipse to support Java8
  • m2e-egit connector now included by default
  • Grails updated to 2.3.8
  • the Groovy 2.3 compiler now availabe from the dashboard (including early support for Grails 2.4M2 in GGTS)

Both tool suites ship on top of the latest Eclipse Kepler SR2 release.

To download the distributions, please go visit:

Detailed new and noteworthy notes can be found here: STS/GGTS 3.5.1 New & Noteworthy.

The next version 3.6.0 is scheduled to arrive in July 2014, shortly after the Eclipse Luna (4.4) release. The first milestone build is scheduled to arrive in late May 2014.

Enjoy!

This Week in Spring - May 6th, 2014

Engineering | Josh Long | May 06, 2014 | ...

Welcome to another installment of This Week in Spring! This week I'm in Los Angeles, speaking to large companies who are looking at building their next-generation architectures on top of Spring and Spring Boot, in particular. Oh, I also go to visit the super cool Pivotal Los Angeles office!

Spring 4.1's Upcoming JMS Improvements

Engineering | Stéphane Nicoll | April 30, 2014 | ...

Spring Framework 4.0 introduced a new spring-messaging module, adding a selection of Spring Integration types such as the core Message abstraction. Spring 4.1 aligns its JMS support to allow you to benefit from that abstraction. But before diving into that, I'd like to show you in details how we further improved the infrastructure for listener endpoints.

Annotation-driven listener endpoints

You are probably used to the <xyz:annotation-driven> element or the @Enable* counterpart and perhaps you were looking for something similar for JMS. Look no further: the next major release of the Spring…

Spring Integration 4.0 Released

Engineering | Gary Russell | April 30, 2014 | ...

We are pleased to announce the 4.0.0.RELEASE version of Spring Integration is now available.

The artifacts are available in the Spring repository (repo.spring.io/release) and Maven Central now.

The new features have been covered in some depth in the Milestone 4 and Release Candidate announcements (including Spring Boot examples) but, to summarize:

  • Requires Spring Framework 4.0.3 or above
  • Greatly expanded annotation support for configuring integration flows, laying the groundwork for the Java DSL which is in progress in the extensions repo
  • New endpoints, and more...

For changes since the release candidate, see the GA release notes

This Week in Spring - April 29th, 2014

Engineering | Josh Long | April 29, 2014 | ...

Welcome to another installment of This Week in Spring! Last week I finished an absolutely lovely time in Bangalore, India, and yesterday I popped into Leuven, Belgium at the insanely poplar Devoxx conference founder Stephan Janssen's invitation for a quick visit to the Belgium Java User Group where I got to hang out with some absolutely amazingly enthusiastic locals and, of course, my pal and Spring framework committer Stéphane Nicoll. Naturally, the video of the whole thing should be up on Parleys at some point soon, too!

Let's dive right into it!

  1. Spring Social co-founder and lead Craig Walls has just announced the long awaited Spring Social 1.1.0 release! This new release is fantastic! If you've been following the pre-release cuts over the last year and a half, then you'll know there's been some deep rethinking on how to easily expose Spring Social's Java configuration. The final release is both concise and general purpose. I am super excited to see this and will begin updating my various Spring Social-powered OAuth clients accordingly! VERY nice job, Craig!
  2. Did you see the new "minor" Spring Boot release, 1.0.2? I use quotes because, with Spring Boot, even the minor releases pack a punch! Dr. Syer announced the release and pointed out - among other things - the fancy new @IntegrationTest annotation. Awesome! (now excuse me while I go update my Boot projects...)
  3. Join me and Ashley Puls from New Relic tomorrow April 30th as we track and trace our way through a Javascript (frontend) and Java/Spring (backend) application.
  4. Spring Integration is looking at an incredible new release -- full support for Annotations and Java Configuration + some Spring Boot support! With 4.0, you'll be able to make XML - free integration applications. Project lead Gary Russell taking you through all the new hotness in the webinar, Spring Integration 4.0, the new frontier, on May 13.
  5. Spring Data Neo4j lead Michael Hunger and I will be giving a webinar on the new awesome in Spring Data Neo4j 3.0 and Neo4j 2.0 on May 20th.
  6. Continuing the series on Project Sagan, Spring framework ninja Brian Clozel has just written up a very nice look at how Project Sagan does client-side JavaScript. This is a great look at what modern, client-side applications look like with npm, grunt, and gulp. Best part? The content is delivered as a video! Perfect!
  7. Spring Roo has a major contributor in DISID! Check out this great post from my pal Pieter Humphrey on the future of Spring Roo.
  8. Get 90 minutes with Chris Richardson at SpringOne2GX 2013 as he discusses futures in Java, Scala and Javascript. And no, we don't mean product roadmaps. Check out his session titled: Futures and Rx Observables: powerful abstractions for consuming web services asynchronously.
  9. You you still think that Spring is just for dependency injection? Join Mark Secrist for an amazing and revealing look at fundamental concepts like the underlying design patterns, and building blocks of the framework - highly reusable insights. Watch the replay of his SpringOne2GX 2013 session: Going beyond Dependency Injection.
  10. Xavier Padró put together a nice post on how to use Spring Integration to configure a timeout when acting as a web-service client
  11. IntelliJ ninja Andrey Cheptsov has put together a lovely post on how to use the Jetbrains-originated language Kotlin, the NoSQL database MongoDB, Spring Boot, and the PaaS Heroku together. Nice!
  12. Petri Kainulainen is back at it again, this time with a great post on using jOOQ - which makes working with SQL easier - along with Spring to handle paging and sorting.
  13. Roger Hughes has a cool post on tracking exceptions with Spring's Quartz scheduling support.
  14. There are some nice posts on the Time is running out, don't lose it. blog. The first one of note is this post on a weird ClassNotFoundException that presents itself on older versions of Spring Integration on JBoss EAP 6.2
  15. The second, slightly older, post is on using the Spring Integration MQTT adapter to communicate with MQTT-powered services. MQTT is a lightweight messaging protocol that is at the heart of many internet-of-things based solutions today. Who knows? Your refrigerator might be using it! :)
  16. Want to run a more production-like Hadoop instance on your local machine? Don't want to run a full virtual machine? Check out this post on deploying Pivotal's HD Hadoop distro using Docker! (and then, check out Spring for Hadoop and Spring XD!)

Project Sagan: client-side architecture

Engineering | Brian Clozel | April 28, 2014 | ...

Now that we know a bit more about JavaScript modules, we're ready to dive into the client-side architecture of the Sagan application.

Note: If you haven't read previous blog posts on the Sagan project, you should know that this is the Spring reference application that powers this blog and everything else at spring.io. Previous posts showed out to run this application, how we do zero downtime deployments and also how we upgraded Sagan to use the latest JDK8 features.

In this post, I want to walk through the basics of the client-side architecture in the Sagan application:

  1. Why is the client application in a separate sagan-client project module?
  2. How is it linked with the sagan-site module?
  3. What are npm, bower and gulp?
  4. How do those tools work together to make the client application?

This Week in Spring - April 22nd, 2014

Engineering | Josh Long | April 22, 2014 | ...

Welcome to another installment of This Week in Spring! This week I'm in Bangalore, India, for the Great Indian Developer Summit talking to developers about (wait for it..) Spring! I also met with a large system integrator here in Bangalore's Electronic City and addressed a large team of architects and engineers using Spring on projects worldwide. India's an interesting place because so much of their business comes from companies abroad who are trying to get extra help on otherwise overwhelming projects. Naturally, anything that helps get more done, quicker, is of interest here and Spring's a favorite. Needless to say, Spring Boot resonated a lot! It's not all work, though, when the local food is as good as it is here! :)

Lots of webinars and replays this week - we've got a lot to cover, so let's get to it!

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all