This release corrects an issue with the conversion of some complex message payloads when being mapped to method arguments, as well as a few other minor issues. Release Notes.
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.
Michael Isvy's been hard at work refactoring the code
of the canonical Spring PetClinic reference application. The application is now available on GitHub.
Spring Integration 2.2 introduces many exciting new features including among other things new adapters supporting MongoDB, Redis and JPA. Furthermore, the transaction synchronization support was expanded, allowing for the synchronization of inherently non-transactional resources with existing transactions. Another noteworthy addition is the ability to add behavior to individual endpoints using advice chains. For example, Spring Integration 2.2 now provides out-of-the-box support for various retry strategies. Watch this replay session to learn about these and many other new features and improvements. We will also take a look at some of the things planned for Spring Integration 3.0.
About the speaker
Gunnar Hillert
Gunnar Hillert is a member of technical staff (MTS) at SpringSource, a division of VMware, Inc. He is a committer for Spring Integration, Spring AMQP and also contributes to the Cloud Foundry project. Gunnar heads the Atlanta Java Users Group and is an organizer for the DevNexus developer conference.
A native from Berlin, Germany, Gunnar has been calling Atlanta home for the past 11 years. He is an avid gardener specializing in anything sub-tropical such as bananas, palm trees and bamboo. As time permits, Gunnar works on his Spanish language skills and he and his wife Alysa are raising their two children tri-lingually (English, German, Spanish). Gunnar blogs at: http://blog.hillert.com/ and you can follow him on Twitter: https://twitter.com/ghillert
Gary has been in software engineering, concentrating on Enterprise Integration, for over 30 years on various platforms, and in the Java space since the late '90s.
He has been developing with the Spring Framework since 2004 and joined SpringSource/VMware in 2009 in a consulting role. From 2009 until the end of 2011 he taught Core Spring and Enterprise Integration with Spring to several hundred developers, as well as providing Enterprise Integration consulting services with Spring Integration, Spring Batch and Core Spring.
He has been a committer on the Spring Integration project for nearly 3 years and became a full time member of the engineering team in January 2012.
Oleg is a Principal Architect with Hortonworks responsible for architecting scalable BigData solutions using various OpenSource technologies available within and outside the Hadoop ecosystem. Before Hortonworls Oleg was part of the SpringSource/VMWare where he was a core engineer working on Spring Integration framework, leading Spring Integration Scala DSL and contributing to other projects in Spring portfolio. He has 17+ years of experience in software engineering across multiple disciplines including software architecture and design, consulting, business analysis and application development. Oleg has been focusing on professional Java development since 1999. Since 2004 he has been heavily involved in using several open source technologies and platforms across a number of projects around the world and spanning industries such as Teleco, Banking, Law Enforcement, US DOD and others. As a speaker Oleg presented seminars at dozens of conferences worldwide (i.e.SpringOne, JavaOne, Java Zone, Jazoon, Java2Days, Scala Days, Uberconf, and others).
Spring Integration, Batch, and Data Lightning Talks
Join the hosts Mark Fisher and Mark Pollack for a series of 10 lightning talks by leading contributors to the Spring Integration, Batch, and Data projects. Learn all the inside tips and tricks about using these projects in exciting edge cases and get a preview of current experimental work being conducted by the R&D team.
The use-cases will cover the domains of traditional enterprise integration, SaaS integration, and Big Data workflows.
About the speakers
Mark Fisher
Mark Fisher is an engineer within the SpringSource division of VMware and lead of the Spring Integration project. He is also a committer on the core Spring Framework and the Spring BlazeDS Integration project. Mark has provided consulting services for clients across numerous industries, and he has trained hundreds of developers how to use the Spring Framework and related projects effectively. Mark speaks regularly at conferences and user groups in America and Europe.
Dr. Mark Pollack has been a core Spring (Java) developer since 2003 and founded its Microsoft counterpart, Spring.NET, in 2004. Mark now leads the Spring Data project that aims to simplify application development with new data technologies around big data and NoSQL databases. Prior to working on Spring project, Mark worked in offline computing in high-energy nuclear physics at Brookhaven National Laboratory and then moved to the financial services industry as a technical lead for front-office trading systems.
Spring Framework is required knowledge for Java developers. Spring 3.2, the latest major version, builds on the core Spring 3 features like SpEL, the Spring Expression Language, new annotations for the IoC container, and much-needed support for REST. Whether you're just discovering Spring or you want to absorb the new features, there's no better way to master Spring than with this book.
Spring in Action, Fourth Edition is a hands-on guide to the Spring Framework. It covers the latest features, tools, and practices including Spring MVC, REST, Security, Web Flow, and more. You'll move between short snippets and an ongoing example as you learn to build simple and efficient J2EE applications. Author Craig Walls has a special knack for crisp and entertaining examples that zoom in on the features and techniques you really need.
Table of Contents, MEAP Chapters & Resources
Table of Contents
PART 1: CORE SPRING 1.Springing into Action - FREE 2. Wiring Beans 3. Advanced bean wiring 4. Aspect-oriented Spring
PART 2: SPRING ON THE WEB 5. Building web apps with Spring MVC 6. Spring web views 7. Advanced Spring MVC 8. Working with Spring Web Flow - AVAILABLE 9. Securing Spring Web
PART 3: SPRING IN THE BACKEND 10. Persisting data with Spring and JDBC 11. Spring and ORM 12. Working with Schema-less Data 13. Caching data 14. Securing Methods
PART 4: INTEGRATING SPRING 15. Working with remote services 16. Creating REST APIs with Spring MVC 17. Consuming REST APIs 18. Messaging with Spring 19. Sending emails with Spring 20. Managing Spring Beans with JMX
What's Inside
Updated for Spring 3.2
Environment-specific configuration using definition profiles
Spring Data for NoSQL
Using annotations to reduce configuration
Working with RESTful resources
Spring Expression Language (SpEL)
Security, Web Flow, and more
Nearly 100,000 developers have used this book to learn Spring! It requires a working knowledge of Java.
About the Author
Craig Walls is a software developer at SpringSource. He's a popular author and a frequent speaker at user groups and conferences. Craig lives in Plano, Texas.
No application is an island and this is more obvious today than ever as applications extend their reach into people's pockets, desktops, tablets, TVs, Blu-ray players and cars. What's a modern developer to do to support these many platforms? In this talk, join Josh Long to learn how Spring can extend your reach through (sometimes Spring Security OAuth-secured) RESTful services exposed through Spring MVC, HTML5 and client-specific rendering thanks to Spring Mobile, and powerful, native support for Android with Spring Android.
About the speaker
Josh Long
Josh Long is the Spring developer advocate. Josh is the lead author on Apress’ Spring Recipes, 2nd Edition, and a SpringSource committer and contributor. When he's not hacking on code, he can be found at the local Java User Group or at the local coffee shop. Josh likes solutions that push the boundaries of the technologies that enable them. His interests include scalability, BPM, grid processing, mobile computing and so-called "smart" systems. He blogs at blog.springsource.org or joshlong.com and can be found on Twitter at @starbuxman.
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
the new release and try it out.
One last reminder: be sure to join me Thursday for a webinar introducing Spring's REST and mobile support 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.
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.
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.
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!
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.
Before the RestTemplate and REST, and before document-oriented SOAP-based web services and Spring Web Services, there was
Spring's JaxWsPortProxyFactoryBean, which can give you a strongly typed client to talk to SOAP web service with a JAX-WS port, or client.
This post introduces how to use Spring's JAX-WS support to create a client.
The Spring Addon blog has a perhaps overly-brief look at how to setup a Spring MVC-based REST endpoint. He makes a good point though: if you've got a Spring MVC application, then exposing a RESTful service is dead simple from there.
The fuzzydb in focus has a nice post on how to support both existing Hibernate-based services, as well as
JPA-based repositories based on Spring Data JPA, which requires a EntityManager reference.
The approach is simple, and something that's uniquely easy to do with Spring's Java configuration style.
Addressing Messaging Challenges Using Open Technologies
For Modern Applications Many businesses are faced with some new messaging challenges for modern applications, such as horizontal scalability of the messaging tier, heterogeneous messaging systems and access methods, and extreme transaction processing. This presentation/demo will cover how businesses can overcome these messaging challenges with the use of Spring and RabbitMQ technologies.
Tom will build a case for AMQP, explain how SpringSource is providing AMQP support via Spring AMQP and Spring Integration, explain how RabbitMQ is a modern messaging solution that offers a reliable, highly available, scalable and portable messaging system with predictable and consistent throughput and latency, and demonstrate how Spring Integration and RabbitMQ can be progressively introduced into a standard Spring web application.
About the speaker
Tom McCuch
Tom McCuch is a Solution Engineer for Hortonworks with over twenty two years of experience in software engineering. Tom specializes in the architecture, implementation, and deployment of distributed systems requiring high Reliability, Availability, and Scalability (RAS) features. Prior to Hortonworks, Tom worked for SpringSource - handling field architecture for their global accounts including Financial Services, Transportation, and Energy. Tom has consulted enterprise clients across multiple industries in the architecture of mission-critical solutions based on open source software as well as led the engineering of enterprise Java middleware supporting next-generation telecommunications products deployed at tier-1 telcos both in the U.S. and Europe.
Oleg is a Principal Architect with Hortonworks responsible for architecting scalable BigData solutions using various OpenSource technologies available within and outside the Hadoop ecosystem. Before Hortonworls Oleg was part of the SpringSource/VMWare where he was a core engineer working on Spring Integration framework, leading Spring Integration Scala DSL and contributing to other projects in Spring portfolio. He has 17+ years of experience in software engineering across multiple disciplines including software architecture and design, consulting, business analysis and application development. Oleg has been focusing on professional Java development since 1999. Since 2004 he has been heavily involved in using several open source technologies and platforms across a number of projects around the world and spanning industries such as Teleco, Banking, Law Enforcement, US DOD and others. As a speaker Oleg presented seminars at dozens of conferences worldwide (i.e.SpringOne, JavaOne, Java Zone, Jazoon, Java2Days, Scala Days, Uberconf, and others).
Introduction to Spring Integration and Spring Batch
In this session you will learn what Spring Integration and Spring Batch are all about, how they differ, their commonalities, and how you can use Spring Batch and Spring Integration together.
We will provide a short overview of the Enterprise Integration Patterns (EIP) as described in the highly influential book of the same name. Based on these patterns, we will then see how Spring Integration enables the development of Message-driven applications. This allows you to not only modularize new or existing applications but also makes it easy to integrate with external systems.
This session will also introduce Spring Batch. Spring Batch addresses the needs of any batch process, be it complex calculations in large financial institutions or simple data migration tasks as they exist in many software development projects. We will cover what Spring Batch is, how Spring approaches the concepts of batch and how Spring handles scaling batch processes to be able to handle any volume of data.
You will also see how Spring Integration and Spring Batch maximize the reuse of the integration support provided by the core Spring Framework. In addition to providing a robust, proven foundation, this also flattens the learning curve considerably to all developers already familiar with Spring.
About the speaker
Gunnar Hillert
Gunnar Hillert is a member of technical staff (MTS) at SpringSource, a division of VMware, Inc. He is a committer for Spring Integration, Spring AMQP and also contributes to the Cloud Foundry project. Gunnar heads the Atlanta Java Users Group and is an organizer for the DevNexus developer conference.
A native from Berlin, Germany, Gunnar has been calling Atlanta home for the past 11 years. He is an avid gardener specializing in anything sub-tropical such as bananas, palm trees and bamboo. As time permits, Gunnar works on his Spanish language skills and he and his wife Alysa are raising their two children tri-lingually (English, German, Spanish). Gunnar blogs at: http://blog.hillert.com/ and you can follow him on Twitter: https://twitter.com/ghillert
Gary has been in software engineering, concentrating on Enterprise Integration, for over 30 years on various platforms, and in the Java space since the late '90s.
He has been developing with the Spring Framework since 2004 and joined SpringSource/VMware in 2009 in a consulting role. From 2009 until the end of 2011 he taught Core Spring and Enterprise Integration with Spring to several hundred developers, as well as providing Enterprise Integration consulting services with Spring Integration, Spring Batch and Core Spring.
He has been a committer on the Spring Integration project for nearly 3 years and became a full time member of the engineering team in January 2012.
The Spring Data team is happy to announce the next major step in the evolution of exporting domain objects to the web using RESTful semantics: Spring Data REST 1.1.0.M1 is now available in the SpringSource milestone repository.
Spring Data REST is a set of Spring MVC components that you can add to your own Spring MVC applications that export your Spring Data Repositories to the web using RESTful, HATEOAS semantics. It provides a consistent interaction API by exporting repositories to RESTful URLs that are configurable in a couple different ways.
Spring Data REST supports CRUD for top-level entities (those domain objects directly managed by a Spring Data Repository) by literally writing a single line of code that defines an interface that extends Spring Data's CrudRepository interface. That done, your entities then have full RESTful semantics. You can create new ones, update existing ones, and delete them using standard URLs that are, following the principles of HATEOAS, discoverable. That means the user agent accessing your Spring Data REST application doesn't need to have advance knowledge of what resources you are exporting. It can discover what entites exist and what relationships exist on those entities by successive calls to URLs provided in the JSON. These "links" are the real foundation and power of a HATEOAS REST application.
Changes from the ground up
Version 1.1 is virtually a re-write from the ground up. Not only is it easier to configure than 1.0 and better conforms to Spring MVC expections for the transition to Spring 3.2, but the biggest change in the internals of Spring Data REST is that it now supports other types of Spring Data repository implementations beyond just JPA. The HTTP semantics for CRUD and manging relationships (if the datastore supports it) remain the same no matter what backing datastore is used.
That means it's now possible to export JPA entities and MongoDB entities within the same Spring Data REST application and access those entities using a common URL structure and using the standard Spring HATEOAS Resource representation for all entities and collections. The user agent accessing those RESTful URLs does not need any special knowledge on which datastore the backing entities are managed by and, most importantly, you don't have to write any code to get that functionality!
MongoDB support
Spring Data REST 1.1 now supports exporting MongoDB CrudRepository implementations. The same HTTP semantics apply to MongoDB @Document entities as apply to JPA entities. GET, POST, PUT, DELETE are of course supported, but so is @DBRef. You can view and manage the relationship between two documents using GET, POST, PUT, and DELETE and you can export finder methods based on your @Query definitions. Please reference the spring-data-mongodb reference documentation for the full details of how the object mapping differs from JPA style mapping and how query definitions work.
Gemfire support
Spring Data REST 1.1 now supports exporting entities that use the high-performance Gemfire database to different Regions. Read the Spring Data Gemfire documentation for the full explanation of the vast configuration options and how POJO mapping in Gemfire differs from other mapping technologies.
Neo4J support is next
Spring Data REST 1.1 is now set to support Neo4J GraphRepositorys with the next version of spring-data-neo4j, version 2.3. When that's generally available (which should be around or before the general availablity of Spring Data REST 1.1 RELEASE), you will be able to access @NodeEntitys and their relationships using standard HATEOAS semantics, just like you do with the other datastores.
Add it to your existing apps
Spring Data REST is designed in such a way that you can, if you wish, create an entire application for the Spring Data REST application. It's just a standard Spring MVC webapp after all. But things get really interesting when you add Spring Data REST to your own services.
Spring HATEOAS author Oliver Gierke has created an example application that demonstrates the use of HATEOAS principles in a modern web application. It's called spring-restbucks and is an implementation of the Restbucks application described in the Systematic Theology of REST services: REST in Practice by Jim Webber, Savas Parastatidis and Ian Robinson.
Mixin REST services
By mixing Spring Data REST with your other RESTful services, you can get a seamless integration between those domain objects exported by Spring Data REST--objects for which you didn't have to write any code to have them exposed--and those services that don't represent an actual entity but a process. You can see an example of how a payment service might interact with domain object CRUD in the spring-restbucks application, where credit card payment processing is handled by a custom controller, while object CRUD is handled by Spring Data REST. Your custom controllers can actually piggyback onto the Spring Data REST URLs so that a consistent and simple URL structure can be maintained throughout the appliation, no matter whether the URL refers to your custom controller, a Spring Data REST JPA Repository, or any of the other supported Repository styles.
It's not exclusive
It's not an either-or with Spring Data REST. If you don't want all of your Repositories exposed to a web client, no problem! There a several different ways you can turn off functionality for Repositories. You can embed annotations into your source code or, if you don't have access or simply can't add the Spring Data REST annotations, you can use a fluent, DSL-style configuration to tell Spring Data REST how your resources should be exposed. Using Spring Data REST in your application isn't an exclusive committment to only one way of doing things. Spring Data REST is structured in a what that it will play nicely with your existing application so you can incorporate those bits of functionality from Spring Data REST you want, while still maintaining all the custom-coded services you're used to creating in Spring MVC controllers.
JSONP support moving to a filter
The JSONP support that was built into Spring Data REST 1.0 has been removed from the core framework in preference to a forthcoming general-purpose JSONP Serlvet Filter that will work much better than the way JSONP was implemented in version 1.0. When that filter is generally available, then JSONP support can be added not just to Spring Data REST, but virtually any Servlet-based REST resource.
If you're planning on attending CONFESS_2013 in Vienna the first week of April, then you can hear all about Spring Data REST at my talk on exporting entities to the web.
we are happy to announce the next major release of our Eclipse-based tooling today: The Spring Tool Suite (STS) 3.2.0 and the Groovy/Grails Tool Suite (GGTS) 3.2.0.
major performance improvements for working with Spring projects
major improvements to the Live Spring Beans Graph
added support for Spring Integration 2.2
updated to include Groovy 2.0.7 and Grails 2.2.1 (Groovy 2.1 is available from the dashboard)
We continue to ship distributions both on top of Eclipse 3.8 and Eclipse 4.2. While the 4.2 stream of Eclipse has improved a lot in the Eclipse Juno SR2 release, we still recommend using the 3.8-based version for optimal performance and stability.
Updates from STS/GGTS 3.0.0 and 3.1.0 are available through the automatic "Check for Updates". Users of STS 2.9.x (or older) should start with a fresh installation of STS/GGTS 3.2.0.
The next version 3.3.0 is scheduled to arrive in July 2013, shortly after the Eclipse Kepler (4.3) release. Also watch out for milestone builds of 3.3.0 if you want to stay up-to-date with the latest developments.