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!)

SpringOne2GX 2013 Replay: Futures and Rx Observables: powerful abstractions for consuming web services asynchronously

News | Pieter Humphrey | April 29, 2014 | ...

Recorded at SpringOne2GX 2013 in Santa Clara, CA

Speaker: Chris Richardson

A modular, polyglot architecture has many advantages but it also adds complexity since each incoming request typically fans out to multiple distributed services. For example, in an online store application the information on a product details page - description, price, recommendations, etc - comes from numerous services. To minimize response time and improve scalability, these services must be invoked concurrently. However, traditional concurrency mechanisms are low-level, painful to use and error-prone. In this talk you will learn about some powerful yet easy to use abstractions for consuming web services asynchronously. We will compare the various implementations of futures that are available in Java, Scala and JavaScript. You will learn how to use reactive observables, which are asynchronous data streams, to access web services from both Java and JavaScript. We will describe how these mechanisms let you write asynchronous code in a very straightforward, declarative fashion.

!{iframe width="560" height="315" src="//www.youtube.com/embed/aZkwIA4k2xU" frameborder="0" allowfullscreen}{/iframe}

SpringOne2GX 2013 Replay: Going Beyond Dependency Injection

News | Pieter Humphrey | April 29, 2014 | ...

Recorded at SpringOne2GX 2013 in Santa Clara, CA

Speaker: Mark Secrist

Many developers who are learning the Spring Framework think of it as simply another mechanism for centralized dependency injection. While the framework does handle that responsibility quite well, the framework is so much more. In this session, we'll explore some of the building blocks and patterns used by the core framework as well as many of the other Spring projects. The result is that attendees will gain a better understanding of how to use the Spring Framework and learn how to build their own components that can leverage these same patterns. Topics we'll explore:

  • What is the benefit of centralized lifecycle management
  • Programming to interfaces
  • Leveraging the power of proxies
  • Using annotations
  • Understanding the template pattern

Dependency injection is one very important part of what the Spring Framework does. However, it is also a collection of very key patterns that we'll explore.

  • Centralized lifecycle management
  • Examining the BeanFactoryPostProcessor
  • Examining the BeanPostProcessor
  • How to write your own BeanPostProcessor
  • Programming to interfaces
  • Benefits of programming to interfaces
  • Loose coupling
  • Examples of how Spring leverages this mechanism
  • How to leverage in your own Spring applications
  • Leveraging the power of proxies
  • How proxies work in Spring
  • How Spring uses them
  • Writing your own proxy-based solution
  • Using annotations
  • Examples of how Spring uses annotations
  • Using your own annotations
  • Understanding the template pattern
  • Purpose of template pattern
  • How Spring uses templates
  • Creating your own template

Learn more about Spring Framework at http://projects.spring.io/spring-framework

!{iframe width="560" height="315" src="//www.youtube.com/embed/JfgP566BHW0" frameborder="0" allowfullscreen}{/iframe}

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?

DISID to lead Spring Roo Project

News | Pieter Humphrey | April 24, 2014 | ...

DISID to lead Spring Roo Project

Disid

We are happy to announce that Pivotal and DISID will collaborate on further development of the Spring Roo project. Roo will continue in its goal of providing a code-gen style of RAD framework, focused helping developers get Java projects done on time.

Pivotal and DISID were already in collaboration around Roo for some time, so we’re excited to be formalizing what originally was an informal, developer led partnership – a partnership that DISID is committed to. The Spring Roo project will remain as an open source project under Spring, maintaining the same current licensing policy. Both Pivotal and DISID are calling on the Spring and Java communities for anyone who would like to collaborate in the project with us!

Learn more at http://www.disid.com/web/guest/spring-roo

Follow DISID on Twitter @disid_corp for more updates!

Spring Boot 1.0.2.RELEASE Available Now

Releases | Dave Syer | April 24, 2014 | ...

Spring Boot 1.0.2.RELEASE is available now in the Spring and Maven Central repositories. This is mostly a bug-fix release (nothing major, but please upgrade if you are using an older version). There are also a couple of nice new features.

My favourite additions are the new @IntegrationTest features. Here's an example:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleActuatorApplication.class)
@WebAppConfiguration
@IntegrationTest("server.port=0")
public class SampleActuatorApplicationTests {

	@Value("${local.server.port}")
	private int port…

Spring Social 1.1.0 Released

Releases | Craig Walls | April 24, 2014 | ...

Dear Spring Community,

I'm very happy to announce the general availability of Spring Social 1.1.0. Along with the release of the core Spring Social project, Spring Social Facebook 1.1.0, Spring Social Twitter 1.1.0, and Spring Social LinkedIn 1.0.0 are also now available.

These releases include several new features, including:

  • Simplified Java and XML configuration support
  • A new ReconnectFilter to automatically reestablish a connection when a token has expired or been revoked
  • Updated API bindings for Facebook, Twitter, and LinkedIn
  • A generic connection factory for APIs where there is not (yet) connection framework support
  • Tighter Spring Security integration, including SocialAuthenticationFilter for provider-based sign-in
  • Thymeleaf template support
  • Updated documentation
  • ...and much more...

Webinar: Spring Integration 4.0 - The New Frontier

News | Pieter Humphrey | April 22, 2014 | ...

Speaker: Gary Russell

The Spring Integration team has been hard at work on the latest release of the popular integration framework. Before version 4.0, it was impractical to define a complete Spring Integration flow without using XML. With this major release, the existing basic annotation support has received an overhaul and those who prefer to use java @Configuration classes can now define their applications without needing to use any XML (of course, XML is still supported as well). In this session we will cover these major changes to the framework, explaining how and when to use them. It will be mainly demonstration and code walk through, and we will build a useful Spring Boot / Integration application from scratch.

Tuesday, May 13, 2014 3:00 pm BST Time (London, UTC+1) Register

Tuesday, May 13, 2014 10:00 am Pacific Daylight Time (San Francisco, UTC-07:00) Register

Webinar: Data-Driven Applications with Spring and Neo4j

News | Pieter Humphrey | April 22, 2014 | ...

Speakers: Michael Hunger (Neo Technology) and Josh Long (Pivotal)

Spring Data Neo4j 3.0 is here and it supports Neo4j 2.0. Neo4j is a tiny graph database with a big punch. Graph databases are imminently suited to asking interesting questions, and doing analysis. Want to load the Facebook friend graph? Build a recommendation engine? Neo4j's just the ticket. Join Spring Data Neo4j lead Michael Hunger (@mesirii) and Spring Developer Advocate Josh Long (@starbuxman) for a look at how to build smart, graph-driven applications with Spring Data Neo4j and Spring Boot.

Tuesday, May 20, 2014 3:00 pm BST Time (London, UTC+1) Register

Tuesday, May 20, 2014 10:00 am Pacific Daylight Time (San Francisco, UTC-07:00) Register

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