It is my pleasure to announce that we released the second Spring 3.0 release candidate today (download page). This release introduces key improvements over RC1 in several areas, in particular:
Spring 3.0 RC2 is fully JSR-330 compliant and passes the final version of the TCK. JSR-330, a.k.a. “Dependency Injection for Java”, basically standardizes an @Inject annotation with a qualifier model. The “javax.inject” annotations can now be used as alternative to Spring’s own @Autowired and @Qualifier annotations. Spring’s <context:annotation-config> element automatically activates JSR-330 processing as well (if the “javax.inject” API is present).
A dedicated AnnotationConfigApplicationContext: making programmatic bootstrapping as convenient as possible, without any XML involved. Explicit registration of annotated classes is supported as well as component scanning in the classpath. This works fine not only with Spring’s @Component model but also with @Configuration classes (a.k.a. “JavaConfig”) and JSR-330 compliant classes.
A new mvc configuration namespace: <mvc:annotation-driven/> activates rich processing of @Controller classes, including support for annotation-driven formatting and annotation-driven validation (if a JSR-303 “Bean Validation” provider such as Hibernate Validator 4.0 is present). The newly revised version of our formatting package also comes with support for the popular Joda Time library.
Revised lifecycle management at runtime: Auto-starting message listener containers and schedulers will now kick off once context configuration has been fully completed. On context close, a specific shutdown order can be defined for ‘phased’ stopping of lifecycle components. A configurable LifecycleProcessor delegate provides corresponding customization hooks.