- Understand the core principles of Spring, and of Dependency Injection (DI) / Inversion of Control
- Use the Spring Core module and DI to configure and wire application objects (beans) together
- Know the different types of metadata (XML, annotations/@Component, and Java Configuration/@Configuration), and how and when to use them
- Understand and use the complete capabilities of the Core module, such as lifecycle events, bean scopes, and the Spring API
- Work with the ORM (Object-Relational Mapping) module to integrate Spring with technologies such as Hibernate or JPA.
- Understand and use Spring's powerful AOP capabilities for programming cross-cutting concerns across multiple points in an application
- Learn safe and maintainable techniques for programming with AOP
- Understand and use Spring's transaction support, including the easy-to-use Java annotation support, as well as the tx/aop XML configuration elements
- Integrate Spring with Java EE Web applications
Hands-On
Minimum 50% hands-on labs
Supported Platforms
Spring 4, Eclipse/Tomcat. Can be supported on IBM RAD/WAS, IntelliJ, NetBeans, GlassFish AS with advance notice
Java Training Course Duration
3 Days
Java Training Course outline
Session 1: Introduction to Spring
- Overview of Spring Technology
- Challenges for Modern Applications
- Motivation for Spring, Spring Architecture
- The Spring Framework
- Spring Introduction
- Managing Beans
- Inversion of Control / IoC, Dependency Injection / DI
- Configuration Metadata Overview, Configuring Beans (XML)
- The Spring Container
- Overview of the Spring Container
- A Simple Spring Example
- ApplicationContext Overview
- ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, AnnotationConfigApplicationContext
- API and Usage
- Dependencies and Dependency Injection (DI)
- Examining Dependencies
- Dependency Inversion
- Dependency Injection (DI) in Spring - Basic Configuration and Usage
Session 2: Configuration in Depth
- Annotation Driven Configuration
- JSR 330 (@Named) and Spring (@Component) annotation styles
- @Named/@Component, @Inject/@Autowired, @Repository, @Service
- Configuring Beans and Autowiring with Annotations
- Enabling Annotations - context:component-scan
- Pros and Cons
- Java Based Configuration (@Configuration)
- Overview - code-centric Configuration
- @Configuration and @Bean
- Dependency Injection
- Resolving Dependencies on Other Beans, Injecting Configuration Classes
- Pros and Cons
- Integrating Configuration Types
- Choosing a Configuration Style
- Integrating Configuration Styles
- Importing: @Import and
- Scanning with @Configuration style
- Bean Scope and Lifecycle
- Bean Scope Defined - singleton, prototype, and Other Scopes
- Configuring Scope
- Bean Creation Lifecycle, Lifecycle Callbacks
- BeanPostProcessor, Event Handling
Session 3: Wiring in Depth
- Value Injection
- Configuring Value Properties, Property Conversions
- Externalizing Values in Properties Files
- Constructor Injection
- Constructor Injection Overview
- Configuration - @Configuration and XML
- p: and c: namespaces for XML configuration
- Qualifiers / Domain Specific Language (DSL)
- Limitations of Autowiring
- Qualifiers and DSL
- Creating and Using an Annotation-Based DSL for Bean Configuration
- Benefits of Qualifiers for Bean Configuration
- Profiles
- Profiles Overview
- Configuring Profiles (XML and @Configuration)
- Activating Profiles
- Overview of SpEL
Session 4: Database Access with Spring
- Overview of Spring database support
- Configuring a DataSource
- Using Spring with Hibernate
- High Level Hibernate Overview
- SessionFactory configuration, LocalSessionFactoryBean
- Contextual Sessions and Spring Integration
- Using Spring with JPA
- Managing the EntityManager (EM)
- LocalContainerEntityManagerFactoryBean and Container-managed EMs
- JEE and JNDI Lookup of the EM
- Configuration and Vendor Adaptors
- Creating a JPA Repository/DAO Bean - @PersistenceUnit, @PersistenceContext
Session 5: Aspect Oriented Programming (AOP)
- Overview of AOP
- Crosscutting Concerns
- AOP Basics, Aspect, Joinpoint, Advice, Pointcut
- Spring AOP Introduction
- Configuration - XML and @AspectJ
- Defining an Aspect, Pointcut, and Advice
- How Advice is Triggered
- Pointcut Expressions and Advice
- Pointcut Expression Overview
- The execution() Designator
- Other Designators (within, target, args, @target, ...)
- Kinds of Advice - before, after, around, after-returning, after-throwing
- Marker Annotations (Rubber Stamp AOP)
- Issue with AOP Configuration
- Defining an AOP Marker / Rubber Stamp
- Configuring AOP Using a Marker
- Advantages of Marker Annotations
- @AspectJ Based AOP Support
- @AspectJ Annotations Overview
- Defining an Aspect, Pointcut, and Advice
- Other Considerations
- Spring AOP Proxies and Self-Invocation Issues
- Load-Time Weaving
- Caveats of AOP
Session 6: Spring Transaction (TX) Management
- Intro to Spring Transaction Management
- Spring Transaction Managers
- Spring Declarative TX Management
- Spring TX Scope and Propagation
- Spring TX Attributes (REQUIRED, SUPPORTS, etc)
- XML Configuration of Transactions
- Specifying Advice, TX Attributes, and Methods
- Linking Advice with Pointcuts
- Benefits of XML Configuration of TX Behavior
Session 7: Web Applications with Spring
- Integrating Spring with Java EE Web Apps
- ContextLoaderListener
- WebApplicationContext
- Using Spring beans in Wep app controller logic
Session 8: XML Specific Configuration
- Collection Valued Properties - Configuring and using lists, sets, etc.
- Additional Capabilities
- Factory Classes and Factory Methods
- Definition Inheritance (Parent Beans)
- AutoWiring with XML
- Inner Beans, Compound Names
Appendix: Maven and Spring