InfoQ

News

Article: What's New in Spring 2.5: Part 1: Annotation-Based Configuration

Posted by Geoffrey Wiseman on Nov 19, 2007 06:30 PM

Community
Java
Topics
Announcements
Tags
Spring

November 19th 2007 was a big day for the Spring Framework.  Spring 2.5 was released, Interface21 has become SpringSource and InfoQ has published the first article in a series of articles by Mark Fisher of SpringSource on the new features:  What's New in Spring 2.5: Part 1: Annotation-Based Configuration.

Describing the series of articles, Mark Fisher wrote:

The newly released Spring 2.5 continues this trend by offering further simplifications and powerful new features especially for those who are using Java 5 or greater. These features include annotation-driven dependency injection, auto-detection of Spring components on the classpath using annotations rather than XML for metadata, annotation support for lifecycle methods, a new web controller model for mapping requests to annotated methods, support for Junit 4 in the test framework, new additions to the Spring XML namespaces, and more.

This article is the first of a three-part series exploring these new features. The current article will focus on simplified configuration and new annotation-based functionality in the core of the Spring application context. The second article will cover new features available in the web-tier, and the final article will highlight additional features available for integration and testing.

If you're currently using the Spring Framework, this is a good opportunity to read about the new features and decide if there's a compelling reason to upgrade.  If you're not using the Spring Framework, but considering it, this is a good opportunity to learn about some of the new features that may make your decision easier, or harder.  Either way, the Spring Framework is a big part of how many people assemble their Java enterprise applications and Mark Fisher will help guide you through the new features in this article and the two parts yet to come.

20 comments

Reply

Missing/hidden XML by Matt Raible Posted Nov 19, 2007 9:51 PM
Re: Missing/hidden XML by Mark Fisher Posted Nov 19, 2007 10:32 PM
Re: Missing/hidden XML by Diana Plesa Posted Nov 20, 2007 3:05 AM
Re: Missing/hidden XML by mohan raj Posted Nov 29, 2007 5:11 AM
Good Stuff by Ray Krueger Posted Nov 20, 2007 8:01 AM
Re: Good Stuff by Mark Fisher Posted Nov 20, 2007 8:35 AM
Re: Good Stuff by Darryl Pentz Posted Mar 4, 2008 2:53 PM
Re: Good Stuff by Archie Cobbs Posted May 12, 2008 9:40 AM
Re: Good Stuff by osman geldi Posted Jul 20, 2008 10:23 AM
Grate Guice alternative by Tom Nichols Posted Nov 20, 2007 8:11 AM
Annotations vs. XML by Geoffrey Wiseman Posted Nov 20, 2007 8:47 AM
Re: Annotations vs. XML by Rod Johnson Posted Nov 20, 2007 4:47 PM
Re: Annotations vs. XML by Jörg Gottschling Posted Nov 23, 2007 1:30 AM
Re: Annotations vs. XML by Rod Johnson Posted Nov 26, 2007 2:34 PM
lament the passing of design and OO programming by James Richardson Posted Nov 27, 2007 6:05 PM
Great Job by Khaled Habiburahman Posted Nov 28, 2007 2:39 AM
Re: Great Job by mohan raj Posted Nov 29, 2007 5:12 AM
the 2nd part and 3rd part by Nantian Lotus Posted Feb 5, 2008 8:43 AM
Re: the 2nd part and 3rd part by Lou Sacco Posted Mar 27, 2008 2:06 PM
2nd and 3rd parts by Gregor Morrison Posted Jun 3, 2008 4:58 AM

Back to top

Missing/hidden XML

Nov 19, 2007 9:51 PM by Matt Raible

There seems to be a fair amount of missing or hidden XML in this article. If you look at the HTML source, you'll see where some XML has not been properly escaped.

Back to top

Re: Missing/hidden XML

Nov 19, 2007 10:32 PM by Mark Fisher

Matt, You are right. Someone must have edited this recently, because the XML was showing up properly before. I just sent a mail to the editor. Thanks, Mark

Back to top

Re: Missing/hidden XML

Nov 20, 2007 3:05 AM by Diana Plesa

Hi Matt, Mark The XML has been fixed now. Best Diana

Back to top

Good Stuff

Nov 20, 2007 8:01 AM by Ray Krueger

I am really looking forward to using these new features, great job guys. By the way Mark, your sudden and unexplained use of the p: namespace might freak people out. In your explanation of the lifecycle annotations you declare the datasource using the p: namespace trick from http://blog.interface21.com/main/2006/11/25/xml-syntax-sugar-in-spring-20/ Unfortunately, many people probably aren't aware of this feature and it isn't actually mentioned in the article.

Back to top

Grate Guice alternative

Nov 20, 2007 8:11 AM by Tom Nichols

This is great -- I always liked the annotation-driven style of Guice but didn't want to abandon Spring just for that. Hooray for less XML!

Back to top

Re: Good Stuff

Nov 20, 2007 8:35 AM by Mark Fisher

Ray, Thanks for pointing out that blog for the 'p' namespace. Hopefully that will serve as a 'footnote' now for anyone who may be confused by its usage. Those examples are taken directly from the PetClinic application by the way. Thanks, Mark

Back to top

Annotations vs. XML

Nov 20, 2007 8:47 AM by Geoffrey Wiseman

I have to admit, I'm content to use XML for wiring, myself -- although perhaps when I try the annotations, I'll discover more advantages than I expect. I seem to be in the minority here. That said, I was more impressed by the features here than I expected to be, so next time I start some Spring config., I might give this a try. Sorry about the XML; that might have been my fault, I changed some metadata after the initial publishing, and there are some quirks in the publishing process that Diana's better at handling. ;) I'm looking forward to the next two parts of the article.

Back to top

Re: Annotations vs. XML

Nov 20, 2007 4:47 PM by Rod Johnson

Geoffrey

I have to admit, I'm content to use XML for wiring, myself -- although perhaps when I try the annotations, I'll discover more advantages than I expect. I seem to be in the minority here.
The goal of Spring is to be the ultimate component model. That component model can be configured in different ways. There is no perfect one size fits all approach to configuration. Different contributions are merged together by the container. Certainly, annotations have an important place. However, my experience in practice (long predating my creation of Spring) has been that you need to externalize significant parts of your configuration from Java code. The annotation support in Spring 2.5 is very slick and definitely makes Spring a better product. You can mix and match annotation-driven and XML (and other) configuration so that you can use the appropriate solution for each problem. I'm proud that each version of Spring has made applications easier to build. I recently presented on Configuring the Spring Container at QCon San Francisco, discussing alternative configuration options and best practices. The slides are available as PDF.

Back to top

Re: Annotations vs. XML

Nov 23, 2007 1:30 AM by Jörg Gottschling

The annotation @Resource is a little confusing in the context of spring. As I saw it I first thought it will be used for ressources and not for beans. Like that: @Ressource("file:out/example.txt") public void setOutput(Ressource ressource) {...}

Back to top

Re: Annotations vs. XML

Nov 26, 2007 2:34 PM by Rod Johnson

Jorg I agree that @Resource is a poor name for the annotation, but we didn't choose it... Rgds Rod

Back to top

lament the passing of design and OO programming

Nov 27, 2007 6:05 PM by James Richardson

as now i can turn everything into a FactoryBeanImpl. @Bonkers(Retention.FORALLTIME) afterPropertiesSet()

Back to top

Great Job

Nov 28, 2007 2:39 AM by Khaled Habiburahman

Great Job, keep it up Thanks

Back to top

Re: Missing/hidden XML

Nov 29, 2007 5:11 AM by mohan raj

Good Artical...

Back to top

Re: Great Job

Nov 29, 2007 5:12 AM by mohan raj

Of course...Great

Back to top

the 2nd part and 3rd part

Feb 5, 2008 8:43 AM by Nantian Lotus

Good material. But where can I find the 2nd part and 3rd part of this series. Thanks.

Back to top

Re: Good Stuff

Mar 4, 2008 2:53 PM by Darryl Pentz

Not to mention how it's never mentioned how to actually create an instance of the object that is injected by Spring. We see the annotated class, and the configuration XML, but no idea how to construct an instance of the annotated class. Does it appear as if by magic? Is it just me, but why are there no examples of this. Everything is just assumed to originate as some implicit class of the Spring framework, like a controller or some such. I'd like to use this uber-magic of Spring, but how do I create instances of my own 'controller-type' classes automagically injected by Spring. Is this a state secret perhaps? Sorry, just frustrated by the lack of examples, clearly.

Back to top

Re: the 2nd part and 3rd part

Mar 27, 2008 2:06 PM by Lou Sacco

Agreed...this would be very useful.

Back to top

Re: Good Stuff

May 12, 2008 9:40 AM by Archie Cobbs

Darryl Pentz writes:

Not to mention how it's never mentioned how to actually create an instance of the object that is injected by Spring. We see the annotated class, and the configuration XML, but no idea how to construct an instance of the annotated class. Does it appear as if by magic?
I had the same question the first time I read this article (too quickly). The answer lies in the "Auto-Detection of Spring Components". The key "magic" is this tag:
<context:component-scan ... />
which causes Spring to automatically go hunting through your JARs looking for specially-annotated classes. When it finds them, it auto-constructs instances and adds them to your application context. The net effect is a purely annotation-driven (zero XML) way to add and configure individual beans.

Back to top

2nd and 3rd parts

Jun 3, 2008 4:58 AM by Gregor Morrison

Mark, great work, are parts 2 and 3 available yet?

Back to top

Re: Good Stuff

Jul 20, 2008 10:23 AM by osman geldi

client for Windows that can be used to communicate, share, play or work with others on IRC networks around the world, either in multi-user group conferences or in one-to-one private discussions. It has a clean, practical interface that is highly configurable and supports features such as buddy lists Sohbet Chat travesti travesti travesti travesti travesti geciktirici sex shop sex penis büyütücü chat adult forum redtube 89 bitkisel tedavi şişme bebek sikiş file transfers, multi-server connections, SSL encryption, proxy support, UTF-8 display, customizable sounds, spoken messages, tray notifications, message logging, and more. mIRC also has a powerful scripting language that can be used both to automate mIRC and to create applications that perform a wide range of functions from network communications to playing games. mIRC has been in development for over a decade and is constantly being improved and updated with new technologies. The latest news about mIRC can be found on the latest news page.

Exclusive Content

An Overview of the eXo Platform

Mestrallet and Grall cover the eXo platform, the Portlet 1.0 (JSR 168) and 2.0 (JSR 286) specs, eXo Web 2.0 Portal, JSR 286 Inter-portlet communication, eXo JCR and eXo Enterprise Content Management.

The Top 10 Ways to Botch Enterprise Java Application Scalability and Reliability

Purdy discusses Java scaling, performance vs scaling, rewriting frameworks, databases, bottlenecks, abstractions, disaster recovery, one-size-fits-all architecture, big JVM heaps and network failures.

Building Scalability and Achieving Performance: A Virtual Panel

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Domain-Driven Design in an Evolving Architecture

Mat Wall and Nik Silver explain how their has been using Domain-Driven Design in an evolving and Agile environment, at high traffic news site guardian.co.uk.

Avi Bryant on DabbleDB, Smalltalk and Persistence

In this interview, Avi Bryant talks about the Smalltalk web framework Seaside, DabbleDB, using Smalltalk images for persistence instead of an RDBMs, GemStone and more.

Book Review: Agile Adoption Patterns, A Roadmap to Organizational Success

With Agile adoption, context is everything: this book offers patterns and tools to help determine which practices most contribute to meeting your organization's goals.

Rob Windsor on WCF with REST, JSON and RSS

WCF is not just for SOAP based services and can be used with popular protocols like RSS, REST and JSON. Join Rob Windsor as he introduces WCF 3.5 and its new native support for non-SOAP services.

Christophe Coenraets Discusses Flex 3, AIR, and BlazeDS

Christophe Coenraets discusses Flex 3, Flex Builder, AIR, BlazeDS, Adobe and open source, integrating Flex with existing applications, and integrating RIAs with search engines and browsers.


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser