Course Summary
This intensive 5-day training course is designed to give students the most complete deep-dive into the Spring Framework and its goodies.
The course examines the motivation behind Spring, explains its core concepts (IOC, Dependency Injection, AOP, etc.), and through a series of hands-on examples and labs demonstrates the superiority of the framework, its features, integration points, and best practices.
The students start off as Spring newbies, but cross the finish line as Spring experts!
Duration
5 days.
Audience
Additional Notes
The lecture to hands-on ratio for this course is 50-50%.
Note that this course is designed to be customized such that some sections can be removed/deemphasized while others can be added/given more focus. Additionally, the course can be taught on most major Java EE application servers: Tomcat, JBoss, WebLogic, WebSphere, etc.
Spring™ is a trademark of SpringSource, Inc. Java™ and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Marakana does not have any affiliation with Sun Microsystems nor SpringSource, Inc.
Marakana.com Runs on Java using Spring Framework

Marakana.com is written in Java using Spring and Hibernate frameworks. We deploy it on Apache Tomcat Application Server. Both Marakana Spark and Apache Tomcat are Java applications and thus run on Java Virtual Machine. Spark uses MySQL database for persistence. Our operating system of choice is Ubuntu Linux, for security and reliability reasons. So we practice what we teach. You will learn from real developers.
Outline
Why Spring Framework?
- What's wrong with Java EE (EJB)
- Light-weight vs. heavy-weight containers
- Motivation for Spring
- Spring Background
Spring Framework Overview
- Spring features
- Spring light-weight container architecture
- Spring application context
- Inversion of Control (IoC) design pattern
- Dependency Injection (DI)
- Advantages of IoC/DI
- Design for testability
- Low coupling
- Code re-use
- Consistent architecture and configuration
- Easy-to-follow design
- Good OOP
Spring Installation and Configuration
- Spring libraries and dependancies
- XML configuration files
- Annotations
Spring IDE
- Overview
- Features
- Installation
- Editors, Wizards, Graphs, Views, Validators
Spring Persistence/DAO Support
- Overview
- JDBC
- DataSources via JNDI
- Templates
- Exception Translators
- Queries and updates
- Hibernate ORM
- Resource management and SessionFactory
- Templates
- Exception Translators
- Transactions (intro to AOP)
- API
Spring JMS
- Overview
- Templates
- Connection, Destination, Transaction management
- Sending and Receiving Messages (sync/async)
- Listeners
- Message-driven POJOs
Spring Testing
- Unit Testing
- Integration Testing
- Mocks, Stubs, Fixtures
- jUnit Integration
- Spring TestContext Framework
Spring MVC and WebFlow
- Overview
- The DispatcherServlet
- Configuration
- Controllers: simple, form, multi-action
- Views and view resolution: JSP/JSTL
- Forms with Spring tag libraries
- Data-binding, Property Editors, and Validation
- I18N
- Exception handling
- Convention over configuration with annotation-driven controllers
- Overview of Spring WebFlow
- Integration with other frameworks - e.g. Sturts, JSF, Tapestry, WebWork (as requested)
Spring AOP
- Overview
- Concepts
- Proxies
- @AspectJ vs Spring AOP
- API
- Built-in aspects
- Defining and using aspects
Spring Security (Acegi) Framework
- Overview
- Installation
- Architecture
- Configuration
- Web Security
- AOP-based security
- Integration
Final Thoughts
- Overview of Spring JMX
- Overview of Spring Remoting
- New features in Spring 2.5
- Annotation vs. XML configuration (wiring)
- Direction of Spring Framework
- Best practices and architectural/design patterns