Spring Gets Expanded Java Annotation Support
- By Joab Jackson
- July 9, 2008
When writing a complex Java program filled with many interlocking objects, any automation of routine tasks can be a big help. So Java developers using the Java Spring framework should welcome recent additional support for annotations, which could take care of many mundane construction and configuration duties. Spring is an open source collection of components for developing Java Enterprise Edition-based applications.
Codified in Java Specification Request 250 and added to version 5 of Java, annotations "allow you to add metadata to Java source code," explained Rod Johnson, chief executive officer of SpringSource, which sells a commercial version of Spring, as well as corrals the open source Spring development. Johnson gave a presentation on the latest version of Spring, version 2.5, at the JavaOne Conference, held earlier this year in San Francisco.
Annotations are not merely human-readable metadata. They are a set of extensible keywords, each prefixed by the @ symbol, that class constructors and other Java tools can interpret and process. Annotations have actually been around since Spring version 1.2, Johnson said. You could annotate a method or type so that it could be exported to Java Management Extensions (JMX), a Java-based tool for managing distributed Java applications.
The latest Spring really embraces annotations, however. "In Spring 2.5, we've extended annotation support to provide comprehensive support for dependency injection," Johnson said. Dependency injection, the heart of Spring, allows a program to call an external service without knowing the particulars of where that service is located. The nice thing about these annotations, named @autowired and @resource, is that they can eliminate external configurations of applications. Also, they can be used to change the configuration of a program without changing the source code, Johnson said.
Another new set of annotations supported in 2.5, called meta-annotations, can help developers build a semantic model of the application. Some of these annotations have been standardized, and you can also annotate your own types through @component. These annotations identify and document the role of types, such as service object or repository. This allows Spring to scan a program, and find every class and consider it as a candidate for reuse. With Spring, "changes are picked up automatically. So in development, if you pick up a new class, annotate with @component, it instantly becomes a Spring [component] without the need to author any configuration," Johnson said. Using Eclipse Spring IDE plug-in, you can also generate a map of your application using these annotations.
For more information, go to the Spring 2.5 reference guide.