Intentional Software - Democratizing Software Creation
Business users doing programming? Simonyi and Kolk presents how Intentional Software offers a radical new software approach that separates business knowledge from software engineering knowledge.
Tracking change and innovation in the enterprise software development community
Posted by Geoffrey Wiseman on Nov 19, 2007 06:30 PM
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.
Introducing the SpringSource Application Platform
SpringSource Launches New Application Server without Java EE
Fighter Jets and Agile Development at Lockheed Martin (Case study)
Introducing Project Zero: Building RESTful services for your Web application
RESTful todo list sample tutorial with Groovy & Project Zero
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.
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
Hi Matt, Mark The XML has been fixed now. Best Diana
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.
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!
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
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.
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.
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) {...}
Jorg I agree that @Resource is a poor name for the annotation, but we didn't choose it... Rgds Rod
as now i can turn everything into a FactoryBeanImpl. @Bonkers(Retention.FORALLTIME) afterPropertiesSet()
Great Job, keep it up Thanks
Good Artical...
Of course...Great
Good material. But where can I find the 2nd part and 3rd part of this series. Thanks.
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
Agreed...this would be very useful.
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.
Business users doing programming? Simonyi and Kolk presents how Intentional Software offers a radical new software approach that separates business knowledge from software engineering knowledge.
Jason Rudolph discusses Java/Grails integration, Grails plugins, creating a Grails sample application, Grails app structure, data querying and persistence, validation, controllers and tag libraries.
The Scrum Product Owner role is powerful, valuable and challenging to implement. It brings healthier relationships between customers and developers, and competitive advantage - if you do it right.
Effective Java, Second Edition by Joshua Bloch is an updated version of the classic first edition, which won a 2001 Jolt Award. InfoQ asked Bloch questions about the areas that the new edition covers.
A new article by I. Drobiazko and R. Zubairov introduces v. 5 of the Apache Tapestry component-oriented web framework. The tutorial shows how to create a component and covers IoC in Tapestry and Ajax.
In this interview, Burton Group consultant Pete Lacey talks to Stefan Tilkov about his disillusionment with SOAP, his opinion on REST, and addresses some of the perceived shortcomings REST vs. WS-*.
Jay Fields presents his concept of Business Natural Languages - a type of Domain Specific Languages geared towards being readable by domain experts.
Adoption and interest for Distributed Version Control Systems is constantly rising. We will introduce the concept of DVCS and have a look at 3 actors in the area: git, Mercurial and Bazaar.
18 comments
Reply