Latest Pre-release in branch 2.5
2.5.6.SEC03
Released 09 Sep 2011
(14 years ago)
SoftwareSpring Framework
Version2.5
Supported
Java versions
Java 1.4
Initial release2.5
25 Dec 2007
(18 years ago)
Latest release2.5.6.SEC03
09 Sep 2011
(14 years ago)
End of
OSS support
Unavailable
End of
enterprise support
Unavailable
Spring Framework 2.5 ReleasesView full list

What Is New in Spring Framework 2.5

Spring Framework 2.5 delivers a significant upgrade focused on annotation-driven configuration and enhanced enterprise support. This release makes it easier to build Spring applications with less XML.

Category Key Updates
New Features Annotation-driven dependency injection (@Autowired), comprehensive annotation support for MVC, new Spring TestContext framework.
Core Improvements Enhanced auto-wiring, support for classpath scanning, bean name pointcut, and extended XML configuration namespaces.
Data Access New @Transactional annotation, simplified JPA setup, and declarative transaction management for @Repository classes.
AOP & AspectJ Full AspectJ load-time weaving within the Spring context, and easier configuration of @AspectJ-style aspects.
Web & Portlet Annotation-based controller model (@Controller, @RequestMapping), new form tag library, and Portlet MVC support.
Deprecated Features The older BeanFactory API for AOP configuration is deprecated in favor of the simpler XML schema-based configuration.

How Does Annotation-Driven Configuration Simplify Development?

The introduction of @Autowired and classpath scanning is a game-changer. You can now wire your beans directly in Java code, drastically reducing the volume of XML needed.

In practice, you mark your classes with stereotypes like @Component, and Spring automatically detects and registers them. This makes the application context more aligned with your code structure. It's a shift towards convention-over-configuration within the Spring ecosystem.

Key Annotations

  • @Component, @Service, @Repository: For automatic bean detection.
  • @Autowired: For dependency injection on constructors, fields, or methods.
  • @Qualifier: To fine-tune autowiring when multiple candidates exist.

What Are the Major Updates to Spring MVC?

Spring MVC gets a complete annotation-based programming model. The @Controller and @RequestMapping annotations become the primary way to build web controllers.

This approach removes the need to implement specific interfaces or extend base classes. You can map HTTP requests directly to handler methods with flexible method signatures. The new form tag library also simplifies data binding in JSP views, reducing boilerplate code.

@Controller
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping(method = RequestMethod.GET)
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAll());
        return "userList";
    }
}

How Is Transaction Management Improved?

Transaction management becomes more intuitive with the @Transactional annotation. You can now declaratively define transaction semantics directly on your service or repository methods.

This works seamlessly with the new @Repository annotation for Data Access Objects (DAOs). The framework automatically provides persistence exception translation for beans annotated with @Repository, converting proprietary data access exceptions into Spring's unified DataAccessException hierarchy.

What's New in Testing Support?

The new Spring TestContext Framework provides a unified, annotation-driven way to write integration tests. It supersedes the older, more verbose testing superclasses.

You can use @ContextConfiguration to load an application context and @Autowired to inject test dependencies. This framework is agnostic to the underlying testing library (JUnit or TestNG), giving developers more flexibility.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/test-context.xml")
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void testFindUser() {
        // test logic using the real Spring-managed bean
    }
}

How Does AspectJ Load-Time Weaving Integration Work?

Spring 2.5 integrates AspectJ load-time weaving (LTW) directly into the Spring container. This allows you to use AspectJ aspects for cross-cutting concerns like monitoring or auditing, even on beans not managed by Spring.

In practice, you configure LTW in your Spring XML configuration. This matters because it provides a powerful alternative to Spring AOP proxies, enabling weaving at the classloader level for more advanced use cases, like affecting domain objects.

FAQ

Is Spring 2.5 a required upgrade from 2.0?
Yes, if you want to leverage modern annotation-based development. The new features significantly reduce XML configuration and align with Java 5+ coding styles. However, existing 2.0 applications will continue to work.

Can I use @Autowired without component scanning?
No. @Autowired by itself only marks injection points. You must enable component scanning via <context:component-scan> or explicitly define the bean in XML for the autowiring to resolve dependencies.

Does the new annotation MVC model replace the old SimpleFormController?
Yes, the annotation model is the recommended approach for new development. It offers greater flexibility and reduces configuration. The older command/form controller hierarchy is still supported but is considered legacy.

What is the benefit of the @Repository annotation?
Beyond marking a class as a DAO, @Repository enables automatic translation of technology-specific exceptions (like JPA or Hibernate exceptions) into Spring's consistent DataAccessException hierarchy. This keeps your data access layer clean and portable.

Is the TestContext Framework compatible with JUnit 4?
Absolutely. The framework is designed with JUnit 4 and TestNG in mind. You use the SpringJUnit4ClassRunner or a TestNG listener to integrate Spring context loading into your test execution lifecycle.

Releases In Branch 2.5

VersionRelease date
2.5.6.SEC0309 Sep 2011
(14 years ago)
2.5.6.SEC0218 Jun 2010
(15 years ago)
2.5.6.SEC0122 Apr 2009
(17 years ago)
2.5.602 Nov 2008
(17 years ago)
2.5.523 Jun 2008
(17 years ago)
2.5.428 Apr 2008
(18 years ago)
2.5.307 Apr 2008
(18 years ago)
2.5.206 Mar 2008
(18 years ago)
2.5.110 Jan 2008
(18 years ago)
2.525 Dec 2007
(18 years ago)