Chapter 1. Introduction

1.1. Overview

Spring.NET is an application framework focused on helping build enterprise .NET applications. It provides a wide range of functionality such as Dependency Injection, Aspect Oriented Programming (AOP), data access abstractions, and ASP.NET integration. Based on the Spring Framework for Java, the core concepts and values found in Spring.Java have been applied to .NET. The 1.0 release of Spring.NET contains a full featured Inversion of Control container and an AOP library. Subsequent releases will contain support for ASP.NET, Remoting, and data access. The diagram below shows the various modules of Spring .NET. The dark shaded modules are in the 1.0 release while the other modules are planned for future releases. In many cases you can already find working implementations for the planned modules available on our download site.

The Spring.Core library is the most fundamental part of the framework, and provides Dependency Injection functionality. Most of the libraries in the Spring.NET distribution depend upon and extend the functionality provided by this core library. The basic concept here is provided by the IObjectFactory interface that provides a simple yet elegant factory pattern removing the need for programmatic singletons and numerous service locator stubs, allowing you to decouple the configuration and specification of dependencies from your actual program logic. An extension to the IObjectFactory, the IApplicationContext is also located here and adds more enterprise-centric features such as text localization using resource files, event-propagation, and resource-loading.

The Spring.Aop library provides Aspect Oriented Programming (AOP) support to your business objects. The Spring.Aop library complements the IoC container in the Spring.Core library to provide a rock-solid foundation for building enterprise applications and applying services to business objects declaratively.

The Spring.Web library extends ASP.NET by adding a variety of features such as Dependency Injection for ASP.NET pages, Bidirectional data binding, Master pages for ASP.NET 1.1 and improved localization support.

The Spring.Services library let you expose any "normal" object (meaning an object that does not inherit from a special service base class) as an enterprise (COM+) service or remoting object. .NET Web services get additional configuration flexibility with support for depedency injection and overriding of attribute metadata. Windows Service intergration is also provided.

The Spring.Data library provides a Data Access Layer abstraction that can be used across a variety of data access providers, from ADO.NET to various ORM providers. It also contains an ADO.NET abstraction layer that removes the need for tedious coding and declarative transaction management for ADO.NET.

The Spring.ORM library provides integration layers for popular object relational mapping libraries. This provides functionality such as support for declarative transaction management

This document provides a reference guide to Spring.NET's features. Since this document is still very much a work-in-progress endeavour, if you have any requests or comments, please post them on the user forums at The latest version of this document can be found at

Before we go on, a few words of gratitude are due to Chris Bauer (of the Hibernate project team), who prepared and adapted the DocBook-XSL software used to create Hibernate's reference guide, also allowing us to create this guide.