Josh Long

Josh Long

Josh (@starbuxman) is the Spring Developer Advocate at Pivotal and a Java Champion. He's host of "A Bootiful Podcast" (https://soundcloud.com/a-bootiful-podcast), host of the "Spring Tips Videos" (http://bit.ly/spring-tips-playlist), co-author of 6+ books (http://joshlong.com/books.html), and instructor on 8+ Livelessons Training Videos (http://joshlong.com/livelessons.html)

Recent Blog posts by Josh Long

This Week in Spring - April 23rd, 2013

Engineering | April 23, 2013 | ...

Welcome back to another installment of This Week in Spring! Here in San Francisco, we're experiencing the first fits of life and beautiful weather typical of spring time. Fitting, too, as things are busy-as-can-be in the Pivotal open source communities - including Cloud Foundry and SpringSource - as we march towards the Pivotal Initiative launch on April 24th. See you then!

Without further ado, let's get into this week's roundup:

  1. Have you guys seen the amazing Java configuration support in Spring Batch 2.2.0.RC1? The code I've just linked you to demonstrates a complete working Spring Batch job that reads in a .csv file and then writes the records to a data source, all of which are configured in the class, entirely in Java. This demonstrates the @EnableBatchProcessing annotation in 2.2.0. Check it out!
  2. New SpringOne2GX replays now available in HD on YouTube: Implementing Domain Driven Design with Spring and vFabric, Batch Processing and Integration on Cloud Foundry and a bonus session, Understanding Java Garbage Collection and what you can do about it.
  3. The FuzzyDB open source project tweeted that they'd released a new version of FuzzyDB with Spring Data bindings aligned with the Spring Data Arora release train. Congratulations, guys!
  4. Have you had a chance to play with Thymeleaf, the HTML5 and Spring MVC-friendly templating engine? If you'd like to learn even more, you'll probably like this presentation called Thymeleaf, Will it Blend?
  5. David Welch put together a quick demo of Spring Data Mongo and made the work available. He tweets that he went from working demo in 8 minutes with 4 classes and a pom.xml. Nice work man!
  6. Check out Ramnivas Laddad's awesome talk CloudFoundry Architecture talk at SpringOne2GX up live on the SpringSource YouTube channel SpringSourceDev.
  7. Spring HATEOAS lead Oliver Gierke tweeted a link to this post, "How I Explained REST to my wife", which would seem at first to be just one person's attempt at explaining a fairly deep technology concept to a person who didn't have the same technical background, but quickly turns into a (I think really insightful) look at the applicability of REST. Check out Spring HATEOAS if you want to take your REST-fu to the next level.
  8. I'm personally enamored of the new Java configuration APIs, both those recently released and those currently available in preview releases. I showed a very simple example of the Spring Batch API above. I also took a moment last week to write about the powerful Spring Social Java configuration API soon to be available in the 1.1.0.M2 release.
  9. You can have Spring perform a sort of pre-condition check by using the @Required annotation to insist at runtime that a property be satisfied with a non-null value, or Spring will abort the construction of the object. This helps avoid any silent NullPointerExceptions. This JavaBeat post does a nice job explaining how to use @Required.
  10. The how to do in java blog has a nice posting on how to create a custom UserDetailsService in Spring Security 3.
  11. The JavaCodeGeeks blog has a nice post on how to create RESTful services with Spring MVC.
  12. Brian's Java Blog has a nice post on using Spring AOP with both annotation and XML-centric configuration options.

This Week in Spring - April 16th, 2013

Engineering | April 16, 2013 | ...

Welcome to another installment of This Week in Spring! It's been an exciting week for Spring at Pivotal, which you can hear more about at the re-scheduled Pivotal launch event on April 24th.

  1. In case you are reading too fast, Pivotal has re-scheduled the launch event to April 24th. Register here!
  2. Arjen Poutsma has announced Spring Web Services 2.1.3.RELEASE. The new release mainly consists of bug fixes, for the full details check out the changelog.
  3. Don't miss the upcoming Webinar with Donald Miner and Mark Pollack discussing Pivotal HD and Spring Hadoop, a good introductory webinar for those that are Pivotal HD-curious.
  4. New SpringOne2GX replays now available in HD on YouTube: Cloud Foundry Architecture, Effective Design Patterns in NewSQL
  5. There was a great post on Reddit the other day that explains the difference between REST and SOAP in terms of Martin Lawrence. This has nothing to do with Spring, but was droll enough that it's worth sharing.
      Spring, of course, has an amazing REST stack and I highly encourage people to check out how to build consolidated, streamlined REST services with Spring! Moving on... :) 
    
  6. James Rossiter has a good post on how to use a Spring InitBinder to Resolve Type Mismatch and bind Exceptions in POST from Spring MVC to Controller Actions.
  7. @olivergierke brings up a great point on Twitter: how much code does it take to add the JTA 1.2 JSR javax.transaction.Transactional annotation to Spring? Almost nothing! Most of the code here is just unit tests. Otherwise, this is just a dead simple mapping of the JTA annotation to Spring's already supported engine, which also currently supports the native Spring @Transactional and @javax.ejb.TransactionAttribute annotation.
  8. Are you looking into Gradle and want to get started with Spring, quickly? Giancarlo Frison has put together a nice post with a bootstrap Gradle build that can be used with Spring applications.
  9. Eugen Paraschiv has put together a nice post on how to use RestTemplate to do HTTP BASIC authentication.
  10. Spring has long supported a utility class, called the org.springframework.util.StopWatch, which can be used to measure the execution of method invocations. The Javarevisited blog has a
      <a href="http://www.stumbleupon.com/su/1rKtfP/javarevisited.blogspot.com.au/2012/04/how-to-measure-elapsed-execution-time.html">nice post on how to use the <CODE>StopWatch</code> class</a>.
    </LI>
    
  11. This post is fairly old, but I just stumbled upon it and thought it was a well thought out presentation introducing Aspect Oriented Programming (AOP) in Spring.

This Week in Spring - April 9th, 2013

Engineering | April 09, 2013 | ...

Welcome to another installment of This Week in Spring! As usual, we've got a lot to cover, so let's get to it!

  1. SpringSource CTO Adrian Colyer outlines the direction and momentum of SpringSource and the Spring projects under the Pivotal Initiative, a new company spun out of EMC comprised of - among other things - SpringSource, Cloud Foundry, and GreenPlum. This is definitely worth a read if you want to understand Spring's - ahem - Pivotal role in this new initiative!
    </LI>  
    <LI> Spring Batch lead Michael Minella has <A href="http://www.springsource.org/node/9666"> announced that Spring Batch 2.2.0.RC1 is now available</a>.
    	The new release includes preliminary support for Spring Data, Java configuration support, non-identifying job parameters 
    	and numerous fixes and polishes. This release is amazing, and definitely worth a look. I, personally, <EM>love</EM> the Java configuration API that's
    	been surfaced. You don't need to write another…

This Week in Spring - April 2nd, 2013

Engineering | April 02, 2013 | ...

Welcome to another installment of This Week in Spring ! I've just returned from Devoxx UK and Devoxx France where I was very happy to talk to developers using Spring from all walks of industry. I also spoke at Skills Matter in London on building web applications using Spring. Thanks to Skills Matter, the London Spring User Group, and to the amazing Rob Harrop for having me, it was such a pleasure! The video from that session is available online if you're interested.

  1. Register today for the Super Early Bird rate at SpringOne 2GX 2013, in Santa Clara, CA Sept 9th-12th, 2013!
  2. Gary Russell's announced that Spring AMQP 1.2.0.M1 is now available.
  3. <LI> The Cujojs team has announced that <CODE>rest.js</CODE> is <a href="http://cujojs.com/">now part of Cujo.js</a>
    <a href…

This Week in Spring - March 26, 2013

Engineering | March 26, 2013 | ...

Welcome to another installment of This Week in Spring! This week I'm in chilly (brrr!) London, England and Paris, France, for Devoxx UK and Devoxx FR and - tonight - I gave a talk at Skills Matter for the London Spring User Group. What a pleasant experience. If you're in France and want to talk Spring, don't hesitate to ping me.

  1. The CujoJS team has announced that When.js 2.0 is now available.
  2. I found a few nice posts introducing Spring Integration. Here's part 1 and part 2.
     These posts are very thorough and well worth a read! </LI>
     <LI>New SpringOne2GX replays now available in HD on YouTube: <a href="http://www.springsource.org/node/4302">What's New in Spring Integration 2.2 and Spring Integration, Batch, &amp; Data Lightning Talks</a>.</LI>
     <LI> Did you guys miss SpringOne2GX 2012? Don't fret, Oleg Zhurakousky and Arjen Poutsma's talk introducing <a href="http://t.co/nquWxe7L3u">how to use Spring with Scala is now available on InfoQ</a>. </LI>
     <LI>Michael Isvy's been hard at work refactoring the code 
    	 of the canonical Spring PetClinic reference…

This Week in Spring - March 12th, 2013

Engineering | March 12, 2013 | ...

Welcome to another installment of This Week in Spring! This week, there's a lot of Spring Tool Suite news, so be sure to check out

<A href="http://www.springsource.org/sts"> the new release</a> and try it out. 

One last reminder: be sure to join me Thursday for a <a href="http://www.springsource.org/node/4033">webinar introducing Spring's REST and mobile support</a> at 3:00PM GMT (for Europeans) and 10:00AM PST (for North America). 
 
If you've wanted to learn how to build mobile applications for your Spring-based backend services, then this talk is for you. We'll look
at Spring's rich support for REST,
Android and mobile platforms, in general. 

  1. Jonathan Brisbin's announced that Spring Data REST 1.1.0.M1 has been released. The new release is basically a from-the-ground up rewrite. In the new release, there is support for all repositories including MongoDB and GemFire-based repositories.
  2. Martin Lippert has announced that Spring Tool Suite and Groovy/Grails Tool Suite 3.2.0 have been released. The new version is much faster than the previous version, and includes updated support for Eclipse Juno SR2, high-res displays on OSX, and updated compliance with various Spring projects, including Spring Integration 2.2.
  3. Rob Winch has announced that Spring Security SAML 1.0.0.RC2 has Been Released. Spring Security SAML is a third-party contribution that provides SAML support for Spring Security.
  4. Spring Integration 2.2.2 is Now Available! The new release features various important bug fixes.
  5. I'm presenting a webinar on March 14, 2013 - Multi Client Development with Spring! Join me to learn about REST, OAuth, Spring MVC, Spring Android, and much more!
  6. Join Damien Dallimore and David Turanski on a webinar as they introduce the Webinar: Extending Spring Integration for Splunk - March 28th, 2013
  7. New SpringOne2GX replays now available in HD on YouTube: Addressing Messaging Challenges Using Open Technologies, Introduction to Spring Integration and Spring Batch
  8. @SpringSource is launching a (quick) swag-giveaway campaign!
  9. Spring and Groovy/Grails Tool Suite lead Martin Lippert's put together a video comparing the speed of the Tool Suites at 3.1, versus their speed at 3.2.
  10. Speaking of Spring Tool Suite, are you interested in saving 15% on SpringSource Tool Suite Training?
  11. Yuan Ji has a nice post on how to persist Spring Social connections with Spring Data MongoDB. Awesome! I was about to roll up my sleeves and write such an implementation myself! But this should save me some work. Thanks, Yuan!
  12. The Object Partners Inc. blog has a video up that introduces Spring Batch 2 and how to integrate it with Grails. That's pretty cool! They use a Groovy DSL instead of Spring Batch's native XML format to reduce verbosity. One new alternative is the Java configuration support in Spring Batch 2.2.
  13. Petri Kainulainen has a blog post up that introduces Spring Data SOLR query methods.
  14. The Ippon Technologies blog has a nice post on performance tuning the Spring Petclinic sample application.
  15. Michael Simons has a nice post on using the popular, component-oriented web framework Vaadin with Spring
  16.  Nicolas Frankel has a nice post 
     <a href="http://blog.frankel.ch…

This Week in Spring - March 5th, 2013

Engineering | March 05, 2013 | ...

Welcome back to another installment of This Week in Spring.

We've got a lot to cover, though, so let's get to it!

  1. I'm presenting a webinar on March 14, 2013 - Multi Client Development with Spring! Join me to learn about REST, OAuth, Spring MVC, Spring Android, and much more!
  2. Join Damien Dallimore and David Turanski on a webinar as they introduce the Webinar: Extending Spring Integration for Splunk - March 28th, 2013
  3. New SpringOne2GX replays now available in HD on YouTube: Spring Data Repositories: A Deep Dive, and Intro to Cascading
  4. @SpringSource is launching a (quick) swag-giveaway campaign!
  5. Spring Security lead and ninja Rob Winch has announced the initial support for Java-based configuration in Spring Security. This is a wonderful milestone. Recently, we've seen Java-configuration alternatives to the XML DSLs offered for Spring Social, Spring Batch and - now - Spring Security. Check out the Spring Security Java-based configuration for more details.
  6. I had the unique privilege of visiting the Alibaba group in China where they're doing some amazing things with Spring. Read more in my blog, Spring at China Scale: the Alibaba group.
  7. Someone asked me this the other day and I felt like it was worthy of a mention: in your Spring MVC @Controller class handler methods, make sure that the BindingResult argument is immediately after the model or command argument, like this:
     <CODE>@RequestMapping(...) public String handleRequest( @ModelAttribute @Valid YourCustomPojo attempt, BindingResult result)</code>. 
    	 
    	 In this example, <CODE>handleRequest</Code> will validate the POJO (<CODE>YourCustomPojo</code>) - checking the POJO for JSR303-annotations and attempting to apply the constraints because the POJO is annotated with <CODE>@Valid</CODE> - and stash any errors  in the <CODE>BindingResult</code>, which it makes available if we ask for it.
    	 
    	 
    
  8. Speaking of validation using JSR 303, I found this amazing post from 2010 that I felt worth inclusion. This post introduces a custom annotation, called @SpelAssert, that works like JSR303's @ScriptAssert.
  9. Do you want to use Cloud Foundry with the continuous integration capabilities offered by CloudBees? We got you covered! The Cloud Foundry and Cloud Bees teams worked to integrate the process, and the step-by-step introduction is given here.
  10. Alvaro Videla has introduced and open-sourced his RabbitMQ simulator. The RabbitMQ simulator is an awesome visualization tool to demonstrate how RabbitMQ topologies work.
  11. Gary Russell has announced that Spring AMQP 1.1.4 is now available.
  12. The Fstyle blog has an interesting post on how to unit test Spring Security with Spring MVC test mocks.
  13. Our pal Boris Lam is back, this time with a post on how to integrate Spring Data, MongoDB and JavaServer Faces.
  14. Indika Prasad, on the Programmer's Guide blog, has put together a tutorial showing how to use Spring Security with Webdav and password encryption.
    </LI>
    <LI> The  <EM>Java J2EE SOA Key Points</EM…

Spring at China Scale: Alibaba Group (Alipay, TaoBao, and TMall)

Engineering | March 04, 2013 | ...

So What Does It Take to Operate at China Scale?

Some of the companies of the Alibaba group

The challenges inherent to building enterprise applications that meet China-scale demand are unparalleled. One exemplary Chinese organization using Spring heavily to solve very unique challenges is the Alibaba group. Alibaba is itself an online auction site, like eBay in the west. The Alibaba group in turn owns a few other online service companies, like Alipay (a secure transaction processor, like PayPal in the west), TaoBao (a comparison shopping engine, like Shopzilla in the west), and TMall (an e-tailer, exposing the catalogues of merchants, like Amazon in the west).

From the InfoQ article, "on 11 November, 2012 (the Double Sticks promotion day), Tmall and Taobao witnessed 147 million user visits, purchases of 30 million people and nearly 100 million paid orders. At 0:00, more than 10 million users were concurrently online." The "double sticks promotion day" is celebrated as a sort of day to honor the single people out there. People make blind-dates, attend speed-dating events, and - somewhat like cyber monday shopping in the US - look for good deals from merchants. TaoBao reported USD $3 billion dollars for a single 24 hour period

This Week in Spring - Feb 26th, 2013

Engineering | February 27, 2013 | ...

Welcome to another installment of This Week in Spring! It's been an exciting two weeks for Hadoop content - Hadoop enthusiasts should check last week's post for an HD quality replay of Building Big Data Pipelines with Spring Hadoop from SpringOne 2GX 2012.

  1. Costin Leau has announced that Spring for Apache Hadoop 1.0 has gone GA!
    	This marks the end of a year in development from the time of the first betas.  There's a lot in this release. For  more information, check out  the blog. </LI>
    
    <LI>Did you guys hear about yesterday's announcement from <A href="http://www.greenplum.com/blog/topics/hadoop/introducing-pivotal-hd">about Pivotal HD, a Hadoop distribution which performs better than the competition, provides a true SQL interface, and features extra tools</a> (like an admin console and an installation, configuration and management facility) and is bundled with Spring for Apache Hadoop? 
    

    The release was in the news a lot yesterday. Here's a nice post on GigaOm, another on
    CIO , and yet another on CRN and another still on Silicon Angle

This Week in Spring - Feb 19th, 2013

Engineering | February 19, 2013 | ...

Welcome back to another installment of This Week in Spring! This week I'm in Atlanta, GA with a few other SpringSource colleagues talking to developers at the DevNexus Java conference and - tomorrow - speaking at the Atlanta Spring User Group. This show is bigger and better than ever this year! I love the energy and community here.

If you're in Atlanta, GA, drop by the eHire labs (see the link above for the address) tomorrow night for the Spring User Group and we'll talk about REST, Spring MVC, Spring for Android, Spring Mobile, and more! I look forward to seeing you.

As usual, though, we've got a lot to cover, so let's get to it!

  1. The Spring Data release train "Arora" is now avialable, a synchronized, tested release of all Spring Data sub projects - check it out now!
  2. Craig Walls has announced that Spring Social 1.1.0.M2 has been released ! The new release incorporates tighter integration with Spring Security and a slew of new features.
  3. Jeremy Grelle has announced When.js 1.8.0 which is cujojs's lightweight Promises/A implementation.
  4. <LI>  Gary Russell <a href  = "http://www.springsource.org/node/3813">has announced Spring Integration 3.0.0 M1</a>. 
     There are no major new features in this first milestone, it is mainly refactoring, removing deprecations, etc. Browse the documentation 'what's new' and the release notes for more information.
    
    		 
    
  5. Register now to talk with Sam Brannan and Rossen Stoyanchev on Feb 21st in the Webinar: Testing Web Applications with Spring 3.2
  6. New replays from SpringOne2012 - talks from the Data and Integration track talks starting to hit YouTube. Check out Gary Russell's Monitoring and Managing Spring Integration Part 2, and Hadoop / Big Data enthusiasts shouldn't miss Costin's talk How to build Big Data Pipelines for Hadoop using OSS.
  7. As a bonus session this week, we've also released Spring Data REST: Easily export JPA entities directly to the web.
  8. Krishna's blog has a nice post on using CAS (single signon using Jasig) with Spring Security.
  9. Sergei Sizov has put together a nice post on using Spring Security and HTTP Basic authentication.
  10. The Lucky Ryan blog has a very nice post introducing HDIV - which can be used to prevent cross site request forgery (CSRF), remove the ability to alter non-editable data (hidden fields, params…) and even has options to limit characters globally across form fields - and explaining how to use HDIV with Spring MVC.
  11. Your remoting layer (the layer that's exposed over the network) might simply surface the domain model objects from your services layer. Often, however, the object sent across the wire is a slightly different version of the data used by the service. Perhaps fields are omitted because they contain too much data. Perhaps extra fields are added to communicate metadata about the service itself. Perhaps you simply want to flatten two different types into a single object for ease-of-transport. Whatever the reason, the common pattern (or anti-pattern) to handling this is a DTO (data transfer object). We had these before with EJBs and DCOM and CORBA. Now we have them with REST. If you find you have to have DTOs, the jtransfo library introduced in this post seems like it might be helpful in reducing the tedious adapters from DTO to domain object. The post explains how to use JTransfo to automatically handle adapting domain objects to DTOs.
  12. The Fahd.blog blog has a nice introduction to Spring Batch's RetryTemplate. This is a very powerful component of Spring Batch that doesn't get enough love, so I am glad to see this post!
  13. The Learn and Shine blog has a nice post introducing how to use Spring MVC to render XSLT views.
  14. The Java Ninja Chronicles By Norris Shelton, Jr blog has a very concise post on how he took the first steps in using Spring's Java configuration style to make short work of loading properties from an exotic source.

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