Spring Framework is a dominant application framework for Java, Spring solves core enterprise development and runtime problems, offering configuration via Dependency Injection, declarative services via AOP, and packaged enterprise services.
Spring is a layered Java/J2EE application framework, based on code published in Expert One-on-One J2EE Design and Development by Rod Johnson.
Here are some key features of "Spring Framework":
· The most complete lightweight container, providing centralized, automated configuration and wiring of your application objects. The container is non-invasive, capable of assembling a complex system from a set of loosely-coupled components (POJOs) in a consistent and transparent fashion. The container brings agility and leverage, and improves application testability and scalability by allowing software components to be first developed and tested in isolation, then scaled up for deployment in any environment (J2SE or J2EE).
· A common abstraction layer for transaction management, allowing for pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. Generic strategies for JTA and a single JDBC DataSource are included. In contrast to plain JTA or EJB CMT, Spring's transaction support is not tied to J2EE environments.
· A JDBC abstraction layer that offers a meaningful exception hierarchy (no more pulling vendor codes out of SQLException), simplifies error handling, and greatly reduces the amount of code you'll need to write. You'll never need to write another finally block to use JDBC again. The JDBC-oriented exceptions comply to Spring's generic DAO exception hierarchy.
· Integration with Toplink, Hibernate, JDO, and iBATIS SQL Maps: in terms of resource holders, DAO implementation support, and transaction strategies. First-class Hibernate support with lots of IoC convenience features, addressing many typical Hibernate integration issues. All of these comply to Spring's generic transaction and DAO exception hierarchies.
· AOP functionality, fully integrated into Spring configuration management. You can AOP-enable any object managed by Spring, adding aspects such as declarative transaction management. With Spring, you can have declarative transaction management without EJB... even without JTA, if you're using a single database in Tomcat or another web container without JTA support.
· A flexible MVC web application framework, built on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. Note that a Spring middle tier can easily be combined with a web tier based on any other web MVC framework, like Struts, WebWork, or Tapestry.
· Java 1.5 or later
What's New in This Release: [ read full changelog ]
· SpEL support for static finals on interfaces (SPR-10125)
· AnnotationAwareOrderComparator is able to sort Class objects as well (SPR-10152)
· added dedicated sort method to AnnotationAwareOrderComparator (SPR-9625)
· BridgeMethodResolver properly handles bridge methods in interfaces (SPR-9330)
· LocalVariableTableParameterNameDiscoverer works for bridge methods as well (SPR-9429)
· added constructor with Charset argument to EncodedResource (SPR-10096)
· ResourcePropertyResource accepts EncodedResource for properties files with a specific encoding (SPR-10096)
· SystemEnvironmentPropertySource properly works with an active JVM SecurityManager (SPR-9970)
· CachedIntrospectionResults.clearClassLoader(null) removes cached classes for the system class loader (SPR-9189)
· DisposableBeanAdapter detects "shutdown" as a destroy method as well (for EHCache CacheManager setup; SPR-9713)
· introduced NoUniqueBeanDefinitionException as a dedicated subclass of NoSuchBeanDefinitionException (SPR-10194)