- 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
- Use Spring Boot to simplify dependency management and configuration
- Work with the ORM (Object-Relational Mapping) module to integrate Spring with technologies such as Hibernate or JPA.
- Use Spring Data to automatically generate JPA-based repository classes
- 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
many hands-on labs (minimum 50% of course)
Prerequisites
Working knowledge of Java programming, including use of inheritance, interfaces, and exceptions
Supported Platforms
Standard: Java 8 and Eclipse IDE
Standard: Java 11 and Eclipse IDE
Standard Web Container: Tomcat
Java Training   Course Duration
3 Days
Java Training   Course outline
     Session 1:   Introduction to Spring
- Overview of Spring Technology
            - Motivation for Spring, Spring Architecture
- The Spring Framework
- Spring Introduction
            - Declaring and Managing Beans
- ApplicationContexts - The Spring Container
- XML and @Component/@Named Config
- Dependencies and Dependency Injection (DI)
            - Examining Dependencies
- Dependency Inversion / Dependency Injection (DI)
- DI in Spring - XML and @Autowired
Session 2:  Configuration in Depth
- Java Based Configuration (@Configuration)
            - Overview, @Configuration, @Bean
- Dependency Injection
- Resolving Dependencies
- Integrating Configuration Types
            - XML and @Component Pros/Cons
- @Configuration Pros/Cons
- Choosing a Configuration Style
- Integrating with @Import and <import>
- Bean Scope and Lifecycle
            - Singleton, Prototype, and Other Scopes
            
- Configuring Scope
- Bean Lifecycle / Callbacks
-  Externalizing Properties
            - Properties Files
- @PropertySource, property-placeholder
- Using @Value
- SpEL
- Profiles
            - Overview and Configuration
- Activating Profiles
Session 3:  Spring Boot Overview
- maven and Spring
- Spring Boot Structure
- Spring POMs with Boot Parents
- Spring Boot Starters
- Other Capabilities
Session 4:  Spring Testing
- Testing and JUnit Overview
            - Writing Tests - Test Classes, asserts, Naming Conventions
- Running Tests - IDE, maven, ...
- Test Fixtures - setup and teardown
- Spring TestContext Framework
            - Overview
- Configuration
- Running Tests
Session 5:  Spring and Spring Data with Hibernate/JPA
- 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
- Spring Data Overview
            - Overview and Architecture
- Configuring Spring Data
- Repositories and JPA Repositories
- Using CrudRepository
- Using Spring Data
	        - Naming Conventions for Querying
- Creating more Complex Queries
- Query Configuration
Session 6:  Spring  Transaction (TX) Management
- Overview
- Declarative TX Management (REQUIRED, etc.)
- TX Scope and Propagation
- Pointcut-based Configuration of Transactions 
Session 7: Java EE Web Applications with Spring
- Java EE Web App Overview
- ContextLoaderListener and WebApplicationContext
- Using Spring Beans
[Optional] Session 8:  Additional New Features in Spring 5
 - Updates to Spring Core
- WebFlux / Reactive Web Framework
[Optional] Session 9:  XML Specific Configuration
 - Collections - lists, sets, etc.
- Additional Capabilities
            - Factory Classes and Factory Methods
- Definition Inheritance (Parent  Beans)
- AutoWiring with XML
- Inner Beans, Compound Names