This Week in Spring - September 10, 2013 - SpringOne2GX 2013 Edition

Engineering | Josh Long | September 10, 2013 | ...

Welcome to This Week in Spring, SpringOne2GX 2013 edition!

We're now in day 2 of the SpringOne2GX 2013 conference in Santa Clara, CA! Yesterday's keynote saw a lot of new exciting new announcements and introductions and I'll discuss some of those here, and then have subsequent coverage for the balance of the week.

Here, of course, is your abridged look at all that's glitters in the Spring community and (hurrayy!!) at SpringOne2GX 2013! With no exaggeration, this is the most exciting SpringOne2GX to date.

Some of the amazing Spring project leads at SpringOne2GX 2012

One of the things I most like about SpringOne2GX is the access it affords attendees to the brains behind the awesome. After tonight's keynote dinner a few of the project leads lingered a few minutes and took this impromptu photo for me. Spring core lead Juergen Hoeller is front-center, in the blue shirt. For what it's worth, Juergen doesn't actually tweet (the account is a placeholder!), which makes the opportunity to chat with him at SpringOne even more amazing! Going counter-clockwise, starting after Juergen, you then have Spring Security lead Rob Winch, Spring Mobile and Spring Android

Introducing the Spring YARN framework for developing Apache Hadoop YARN applications

Releases | Janne Valkealahti | September 10, 2013 | ...

We're super excited to let the cat out of the bag and release support for writing YARN based applications as part of the Spring for Apache Hadoop 2.0 M1 release. In this blog post I’ll introduce you to YARN, what you can do with it, and how Spring simplifies the development of YARN based applications.

If you have been following the Hadoop community over the past year or two, you’ve probably seen a lot of discussions around YARN and the next version of Hadoop's MapReduce called MapReduce v2. YARN (Yet Another Resource Negotiator) is a component of the MapReduce project created to overcome some…

Spring Data Babbage release train goes GA

Releases | Oliver Drotbohm | September 10, 2013 | ...

Dear Spring community, just in time for SpringOne 2013, we are happy to announce the availability of the GA version of the Spring Data release train code named Babbage. The release concludes the development of a pile of new features and improvements for the Spring Data Core, JPA, MongoDB and Neo4j modules and will serve as foundation for upcoming releases of a bunch of community modules. Here are the most important features of the release.

General upgrades / Spring Data Commons:

  • Spring 4 and JDK 8 compatibility improvements in Spring Data Core to leak into all modules
  • Extended Pageable/Page APIs
  • Advanced web and hypermedia integration for Spring MVC
  • Support for count…By in derived query method names of repositories
  • Upgrade to Querydsl 3.x timeline
  • Improved CDI extensions for all modules

This Week in Spring - Sept 3rd, 2013

Engineering | Josh Long | September 02, 2013 | ...

Welcome to This Week in Spring! SpringOne is almost upon us! It kicks off this weekend with the Cloud Foundry Platform event and continues on until next Thursday. I, personally, am very excited (and a bit nervous!) about this year's show. It's going to be so epic. Yesterday may have been a holiday here in the US (I hope you all enjoyed a wonderful holiday!), but most of us on the Spring team were working fast and furiously in preparation for SpringOne2GX!

My Road to SpringOne2GX 2013 the SpringOne2GX 2013 agenda looks soo good! I'm into a lot of different things like the open web (REST-powered architectures), big data, the cloud, and security and - at SpringOne - there's no reason I can't get my fill of each topic! Here are just some of the talks that I would love to see when I'm there.

  • Tackling Big Data Complexity with Spring with Mark Fisher and Mark Pollack. Does this one need any introduction? Spring XD leads Mark Pollack (Spring core contributor, Spring AMQP co-founder, Spring.NET founder, Spring Data and Spring Data for Hadoop lead) and Mark Fisher (Spring core contributor, Spring Integration founder, Spring AMQP co-founder) will introduce Spring XD, the most powerful way to build big data-centric applications today.
  • Build Your Very Own Private Cloud Foundry with the amazing Matt Stine. Matt's going to introduce how to setup your own on-premises Cloud Foundry instance using BOSH. Matt's a great speaker, a fantastic technologist, and I can't wait to see this talk.
  • Distributed rules engines and CEP with John Davies. John's the CEO of C24, and has got some incredible enterprise integration war-stories. The man's an epic speaker, too.
  • RabbitMQ is the new King with Jan Machacek and RabbitMQ Developer Advocate Alvaro Videla. Jan's a longtime Spring-guru and distributed systems guy, and Alvaro's the Pivotal RabbitMQ developer advocate (in the same way that I'm the Pivotal Spring developer advocate…). They're both sensational and I expect this one will be a wonderful talk.
  • Your Data, Your Search, Elasticsearch with Costin Leau. Costin worked on, among many things, the original Spring Cache integration with Spring core, Spring Data GemFire, Spring Data itself, the OSGi support in Spring DM server (years ago), and a lot more. He's now working with Elasticsearch, and I can't wait to hear his perspective. Costin's really good at taking complex topics and distilling their essences.

I have four presentations (with amazing co-presenters!) this year. Andy Piper and I will present on building Spring and Cloud Foundry-powered applications. Roy Clarkson and I will present on using Spring and REST to connect applications, Kevin Nilson and I will present on using Spring and profiles to build applications that adapt and Phil Webb and I will present on how to improve your Java configuration muscle memory.

I look forward to seeing you guys at SpringOne2GX! Ping me on Twitter (@starbuxman) if you're around and let's talk Spring!

And now, on to this Week's Roundup! Hopefully, this will sate your appetites until SpringOne2GX! :)

  1. Spring Scala lead Arjen Poutsma has just released Spring Scala 1.0.0.RC1. The new release is the first release candidate in the release cycle, towards a 1.0 release, so definitely check it out!
  2. Join our friends from Pivotal Labs as David Frank shows you How to Get Agile with Pivotal Tracker, on September 5th.
  3. Join Phil Webb as he dives into the one of the newest, hottest projects in Spring - Spring Boot on September 26th.
  4. Jan Stenberg put together a nice post on Russ Miles' Life Preserver pattern as used with Spring. The post is a little light on code, but you can check out the original presentation to get the details!
  5. The JavaBeat blog has a really detailed post on how to use Spring's @Tranactional annotation.
  6. Eugen Dvorkin has a nice post on how to use Storm, Groovy, a CEP engine and Spring together. This is really cool, although there's not a lot of code. I also wonder if this could've been done in a simpler way using Spring XD, though.
  7. Spring web-ninja Arjen Poutsma, and author of the original RestTemplate, has been hard at work on an asynchronous RestTemplate to be included in Spring 4. Looking awesome.
  8. Luis Miguel Gracia Luis has put together a nice post that introduces some of the great new stuff coming for Spring developers since the Spring team became part of Pivotal, including Spring XD, Spring Boot, Spring Loaded and Spring REST Shell. The post is Spanish language, but Google Translate does a fairly good job.
  9. Rajkumar Singh has put together a nice post - Apache Hadoop and Spring Data : Configuring mapreduce Job - that introduces Spring for Apache Hadoop. Great post!
  10. The Bluesoft blog has the second post in a series on using Angular.js with Spring MVC to build a login dialog. This is getting good…
  11. The Technicalpractical blog has a post, Display Model As JSON or XML using Spring. The post does a fine job introducing how to put together a JSON view using Spring MVC 2.5-era APIs, but I hope you'll check out some more recent introductions to building JSON-centric REST services with Spring. Here's a (much) simpler example.

Spring Security 3.2.0.RC1 Released

Releases | Rob Winch | August 31, 2013 | ...

Spring Security 3.2.0.RC1 is now available from the SpringSource repository at http://repo.springsource.org. See here for a quick tutorial on resolving these artifacts via Maven.

This release includes tons of updates and fixes. The highlights include:

  • Polishing of Spring Security Java Configuration
    • Uses content negotiation to determine how to prompt user for authentication when multiple authentication mechanisms (i.e. HTTP Basic and Form login) enabled
    • AbstractSecurityWebApplicationInitializer allows registering Java Configuration directly
    • A number of bugs fixed
  • CSRF protection and automatic integration with Spring Web MVC jsp tags
  • Automatic cache control support
  • Defence against Clickjacking attacks
  • HTTP Strict Transport Security support to reduce Man in the Middle attacks
  • Samples include pom.xml so they can be imported as Maven projects
  • MediaTypeRequestMatcher for matching on requests with content negotiation
  • Over ten java configuration samples have been integrated into the samples directory
  • Three new guides that walk users through samples and provide detailed instructions on how to do specific tasks. More of these guides will follow in coming releases
  • Refer to Spring Security 3.2.0.RC1 preview for more details about this release.

    SpringOne2GX

    To learn about all the new features within Spring Security 3.2 attend my Getting Started with Spring Security 3.2 presentation at SpringOne2GX September 9-12, 2013. If you haven't already gotten your tickets, do so now before its too late!

    Changelog | Download | Reference Manual | Guides | FAQ

    Webinar Replay: Spring with Cucumber for Automation (08/2013)

    News | Pieter Humphrey | August 30, 2013 | ...

    Learn how Spring and Cucumber integrate to make test automation easier. Cucumber is a framework for Behavior-Driven-Development (BDD), a refinement of TDD (Test-Driven-Development). Its intent is to enable developers to write high-level use cases in plain text that can be verified by non-technical stakeholders, and turn them into executable tests, written in a language called Gherkin. Using Spring, Cucumber, WebDriver2, Hemant Joshi will show you how to use Spring & Cucumber to do BDD with elegance and joy.

    Reactor 1.0.0.M2 – a foundation for reactive fast-data applications on the JVM

    Engineering | Jon Brisbin | August 27, 2013 | ...

    I'm excited to announce the 2nd milestone release of Reactor on our way toward 1.0! Maven artifacts for Reactor 1.0.0.M2 are available in the usual milestone repository.

    What is Reactor?

    Reactor is a foundational framework for building high-throughput, asynchronous, reactive applications on the JVM. It provides Selector-style topic matching for event routing, dynamic Consumer assignment, an uber-fast task processor, and reactive Stream and Promise APIs for working with data asynchronously and coordinating asynchronous tasks. It comes with comprehensive Groovy language support by providing langauge extensions to make writing Reactor applications in Groovy pretty darned Groovy! It also has easy-to-use Spring support that automagically wires annotated POJOs to Reactors.

    What's in this Release?

    This 2nd milestone includes a number of bugfixes and some really exciting new features. Reactor now includes a Processor abstraction, which is a highly-optimized task processor based on the LMAX Disruptor RingBuffer. It uses the common abstractions from Reactor to configure a RingBuffer and allows you to use Reactor's common API instead of the Disruptor-specific API. It also by design skips the Selector matching and dynamic Consumer assignment provided by a Reactor in order to wring every last drop of throughput it can. Anecdotal benchmarks on a MacBook Pro show the Processor can pump around 100,000,000 events per second through the pipeline. Yes, you read that right: 100 million per second!

    1.0.0.M2 also includes a small, but significant new feature in the Reactor API which optimizes event publishing in a Reactor to get about 30-50% higher throughput. It won't suit every situation since it prepares an optimized list of Consumers from the Reactor, but for an extra 10 million events per second in throughput, it's a great new feature.

    Optimized Publish

    One of the powerful aspects of Reactor is the Selector matching topic(ish) pub/sub. It allows you to easily assign handlers to events using topics, anonymous objects, assignable type hierarchies, URI path matching, or regular expressions (or any other type of Selector matching if you implement your own, domain-specific Selectors). But many applications can assign their handlers at startup, which means the path to those Consumers can be optimized for efficient event publication. The new Reactor method prepare(Object) allows you to pre-select the Consumers for a key. It returns a Consumer itself that event publishers can use to efficiently notify about new events.

    // Create Environment in which Reactors operate
    Environment env = new Environment();
    Reactor reactor = Reactors.reactor().env(env).get();
    
    reactor.on($("say.hello"), new Consumer<Event<String>>() {
    	public void accept(Event<String> ev) {
    		System.out.println("Hello " + ev.getData() + "!");
    	}
    });
    
    Consumer<Event<String>> sayHello = reactor.prepare("say.hello");
    for(String name : listOfNames) {
    	sayHello.accept(name);
    }
    

    RingBuffer Task Processor

    Reactor 1.0.0.M2 includes the Processor abstraction. It is a simple task processor backed by the LMAX Disruptor RingBuffer and is designed to integrate it seamlessly into the reactive APIs used in Reactor, so it uses common abstractions like Supplier and Consumer. A fully-configured Processor can be created in a single expression and using Java 8 lambdas is more succinct yet:

    Processor<Message> proc = new ProcessorSpec<Message>()
    	.dataSupplier({ return new Message(); })
    	.consume({ msg -> // handle the updated Message object…

    This Week in Spring - Aug 27th, 2013

    Engineering | Josh Long | August 27, 2013 | ...

    Welcome back to another installment of This Week in Spring. We have a lot to cover, as usual! Spring Security and lead Rob Winch feature heavily in this week's roundup! So, cheers to Rob Winch!

    1. Spring Security lead Rob Winch put together a post introducing some of the new, smart and convenient protection in Spring Security against cross-site request forgery (or CSRF).
    2. Rob also put together another epic blog post that demonstrates some of Spring Security's new support for security headers.
    3. Rob was also kind enough to integrate these new features into the Spring REST stack codebase where you can see them in action in the context of a full-stack, integrated Spring REST service. To see these changes, along with Spring Security and Spring Security OAuth, all integrated using Java Configuration, check out the oauth module.
    4. Reactor lead Jonathan Brisbin has announced Reactor 1.0.0.M2 is now available. The new release looks very exciting! From Jon's writeup: "This 2nd milestone includes a number of bugfixes and some really exciting new features. Reactor now includes a Processor abstraction, which is a highly-optimized task processor based on the LMAX Disruptor RingBuffer… Anecdotal benchmarks on a MacBook Pro show the Processor can pump around 100,000,000 events per second through the pipeline. Yes, you read that right: 100 million per second!"
    5. Hyperic, Cloud Foundry, Spring and Spring Data ninja Jennifer Hickey has announced the latest cut of the Spring Data Redis project. The new release includes support for millisecond precision in key expiration commands, resubscription of message listeners on connection failure, a full implementation of ConcurrentMap contract in RedisMap and RedisProperties
    6. Spring Batch lead Michael Minella has announced Spring Batch 3.0M1 has been released! This release marks the first steps towards implementing the JSR-352 Java Batch specification, among other things.
    7. Register now for the Aug 29th Webinar: Taming Coupling & Cohesive Beasts with Modularity Patterns and Spring with Param Rengaiah.
    8. Join our friends from Pivotal Labs as David Frank shows you How to Get Agile with Pivotal Tracker, on September 5th.
    9. Spring Security lead Rob Winch tweeted, "#Gradle made it dead simple to build #SpringSecurity with #SpringFramework 3 and run tests with both #Spring 3/4," and linked to this epic example. This isn't strictly speaking Spring related post, but it's a nice example of a really elegant Gradle build, for those who also work with it, as we do at SpringSource.
    10. Spring Security lead Rob Winch (boy, that guy sure gets around!) also announced the latest release of Spring Security LDAP.
    11. Our pal Xavier Padró is back, this time with a post introducing how to use resource-local JMS transactions on message receipt with Spring's JmsTemplate.
    12. Patrick Grimard's put together a nice post on integrating Yeoman Backbone with a Spring web application, as well as a way to sidestep some issues he was having with resource resolution by using Tuckey’s UrlRewriteFilter. Now, I like the UrlRewriteFilter. That said, I think (but haven't tested..) that Patrick could've accomplished the same thing using Spring MVC resource handling support, as he starts to do in an example in the code when overriding the public void addResourceHandlers(ResourceHandlerRegistry registry) configuration method. Perhaps I'm mistaken, and either way, cool post!
    13. SpringSource has released new trainings to the Q3 schedule, check out the training schedules for: Core Spring, Enterprise Integration with Spring and Spring Web.

    Spring LDAP 1.3.2 Released

    Releases | Rob Winch | August 26, 2013 | ...

    It is with great pleasure that I am announcing the release of Spring LDAP 1.3.2. This release contains lots of bug fixes and will provide a solid foundation for a Spring LDAP 2.0 release.

    I'd like to thank Mattias Arthursson from 261 Consulting for all his hard work on this release.

    Spring Framework 3.2 and the SpringSource EBR

    News | Pieter Humphrey | August 23, 2013 | ...

    Beginning with version 3.2, Spring Framework JAR files such as spring-core, spring-context, and spring-webmvc no longer contain MANIFEST.MF files with OSGi metadata. Likewise, builds are not automatically promoted to the SpringSource EBR. To ensure that OSGi users are able to upgrade to Spring Framework 3.2, SpringSource will create and publish bundles for Spring Framework 3.2 GA to the EBR in a separate process shortly following the GA release. At least one 3.2 milestone or release candidate will also be published such that the community can validate the OSGi metadata prior to going GA. Note that any future releases in the Spring Framework 3.1.x line will continue to contain OSGi metadata and will be published immediately to the EBR as per usual. Interested users may want to place a watch on SPR-8903 to be notified of further updates, e.g. when Spring Framework 3.2 bundles are published to the EBR.

    Get the Spring newsletter

    Thank you for your interest. Someone will get back to you shortly.