SPR-004: Core Spring .NET Syllabus
In this three-day bootcamp you learn how to use the Spring.NET Framework to create well-designed, testable business applications in an agile manner.
Outline
A day-by-day outline of our flagship Spring.NET training course follows:
- Day 1 - Spring .NET Framework Foundations
- Introduction to the lightweight container architecture and the Spring Application Context
- How Dependency Injection and TDD allow you to develop consistently structured, highly configurable, easily testable applications quickly
- How Spring helps you write better, more cohesive code, with a discussion on relevant OO design patterns
- Hands-on labs based upon a realistic business case to be extended throughout the course
- Day 2 - Effective Middle-tier Architecture
- Pragmatic Spring AOP in the middle-tier, with examples and without buzzwords
- Effective persistence: how to build a persistence layer with Spring in best-practice fashion
- Analysis and tradeoffs of relevant persistence strategies, including NHibernate and Spring ADO.NET.
- Transaction management strategies with Spring at the service layer
- Middle-tier unit and integration test strategies
- Day 3 - Effective web architecture and design
- Illustration of Spring's ASP.NET framework's value-add capabilities with a realistic sample application
- Configuring Spring-managed services for remoting without any code
Day by day account
A detailed, day in the life of account of each day follows:
Day 1
Day 1 will start with a detailed explanation of the concepts of Inversion of Control and Dependency Injection. You will learn how to use those fundamental principles to increase the testability of your code and to create well-designed, layered applications. You'll apply design patterns that are ideally suited for use with a lightweight container, and see techniques by example that help you maximize code reuse.
Next, you'll dive into the world of the Spring Application Context, the heart of Spring. You'll learn not only the basic features of the Application Context, but also the advanced capabilities necessary to develop maintainable, extensible applications. These include how and when to:
- Organize Spring configuration files effectively by means of modularization
- Define FactoryObjects to encapsulate creation and/or lookup logic
- Insert custom behavior at well-defined points within the Context lifecycle
- Leverage Spring namespaces for more concise XML configuration
- Extend Spring support classes to bootstrap an Application Context and inject dependencies for integration tests
By the end of the day, you'll understand the Spring Lightweight Container Architecture and how it allows you to rapidly assemble a complex system from a set of loosely coupled component parts. You'll understand the big picture of what Spring is all about, and how it helps you write high quality applications faster.
Day 1 ends with a business case to fuel the hands-on application development over the next three days of the course development. Day 1 itself includes several labs where you will become familiar with the fundamentals of Spring's lightweight container while following a test-driven approach. You'll learn how to use mocks and stubs effectively to facilitate parallel development across collaborating teams, and see what's required from a communication perspective to make it happen. You'll gain experience designing a well-defined business facade, and apply techniques for capturing business contracts in code. You'll develop top-down integration tests to validate those contracts early, and use Spring's test support library to rapidly establish a test harness. The same business case will be used for the remaining three days of the course with labs covering persistence, web-tier, and integration.
Day 2
Day 2 picks up where Day 1 left off: extending the business case into a realistic middle-tier application. Now that the core application logic you implemented on the first day will be integrated with enterprise services such as transaction management, you will dive into the world of Aspect Oriented Programming (AOP), learning where to use AOP and how to identify crosscutting concerns. You'll learn how to use Spring's built-in aspects and develop one of your own.
After the fundamentals of Spring AOP have been established, you will move on to Spring's role in transaction management and data access. By the end of the day, you'll know how to significantly reduce the complexity of your data access code by leveraging Spring for resource management, exception translation, and declarative transaction demarcation.
After an overview of Spring's middle-tier support, you'll proceed into implementation of the data access layer for the lab application. You'll leverage both NHibernate and ADO.NET to connect your application to a database. Using Spring's DaoSupport classes and the Template-based infrastructure, you'll implement reliable and performant data access services in very few lines of code. You'll gain hands-on experience on how to wield ADO.NET effectively in situations which you require ultimate performance and demand complex relational operations. You'll see how Spring has a unique capability to combine ORM and ADO.NET data access techniques in one application.
Next, you'll demarcate transactions using several techniques from the Spring transaction infrastructure. Both declarative and programmatic transaction management are covered. You'll get hands-on experience with IPlatformTransactionManager implementations, including how to mix ADO.NET and NHibernate access in the same transaction., You'll learn how Spring supports switching between local and global transaction management without requiring any code changesAnd it doesn't stop there. You'll declaratively set transaction boundaries, use rollback rules properly, and learn how to design the transaction infrastructure for your application. You'll apply transaction behavior automatically using autoproxy creators and learn how to express transactional policies as source-level metadata with attributes.
By the end of the day, you'll build a fully functional middle-tier, hosting your application's core logic in support of the business case. You'll verify quantitatively that the components of the application work in isolation as well as part of an end-to-end integration test. You'll have experienced first-hand the benefits of Test-Driven Development (TDD) and fail-fast. You'll understand how to use NHibernate and ADO.NET effectively, and see how Spring allows you to decorate your business services with infrastructure in a declarative, dynamic fashion.
Day 3
Day 3 focuses on effective web architecture covering Spring’s ASP.NET Framework in detail.. You will develop a we b front end based that exposes the middle-tier functionality developed in the previous days. All features of Spring’s ASP.NET framework will be covered, showing you how to configure our ASP.NET pages and controls with Dependency Injection to access middle tier services, Bi-Direcitonal databinding between page controls and your data model, declarative validation and error rendering, and externalizing page flow through result set mapping. You'll see what it takes to internationalize and brand your application, including images, and techniques for improving your customer's UI experience.
After having learnt the techniques to manage transactions declaratively, you've gained experience with dynamic proxies, interceptors and other fundamental AOP building blocks. Now, you will build upon that knowledge to see how Spring uses the same general techniques for enterprise integration. You'll export a transactional service to remote clients over a variety of protocols with Spring's Remoting support.
General information
Approach
Through our trainings, you benefit from the wide experience and architectural expertise of our team. We bring that experience to you in a highly interactive, intensely hands-on setting.
The Core Spring course not only focuses on explaining Spring features and how to use them, but also on fundamental architectural issues. It's important to know how to use certain parts of a framework, but it's even more important to be able to decide when to use them.
Assumptions
We assume participants have the a good understanding of the core .NET APIs and C#, as well as a basic knowledge of general .NET concepts and APIs, such as ADO.NET transactions and ASP.NET. As we cover object-relational mapping technologies (ORM) in this course as well, we assume basic knowledge of ORM concepts. After you register, an SpringSource staff member will be happy to recommend any necessary reading to ensure that you get maximum value from the training.
Lab Work
Since this class focuses on Spring as well as the theory of developing lightweight applications that are maintainable and extensible from the ground up, it is 40% theory-oriented. There is 60% lab-work.
Since lab work is a major part of the course, you use a computer when taking this course. For scheduled public training events, we generally (unless otherwise indicated) provided a fully configured lab PC for your use. You may bring your laptop, but it is not necessary. For on-site trainings, SpringSource requests that you bring your laptop with VirtualPC installed.
Contact Us
If you would like more information on this training, please contact us.

