- 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
- Understand and use Boot’s auto-configuration
- Customize Boot’s behavior with properties and in other ways
- Work with the ORM (Object-Relational Mapping) module to integrate Spring with technologies such as JPA
- Use Spring Data to automatically generate JPA-based repository classes
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 11 and Eclipse IDE
Standard: Java 11 and IntelliJ
Standard: Java 17 and Eclipse
Standard: Java 17 and IntelliJ
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
- maven and Spring
- 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
- Spring Boot Quickstart
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
Session 3: Spring Boot Overview
- Spring Boot Overview
- Spring POMs with Boot Parents
- Spring Boot Starters
- SpringApplication – Apps With main()
- CommandLineRunner and ApplicationRunner
- Working with Properties
- Boot Property Files
- Using Application Properties
- Customizing Behavior with Boot Properties
Session 4: Spring Testing
- Testing and JUnit 5 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: Database Access with Spring/Boot
- Overview of Spring/Boot database support
- DataSources, Boot Auto-Configuration, and Custom Configuration
- Boot - Embedded Database
- Using Spring/Boot with JPA
- Spring Boot Auto-Configuration and Scanning
- Customizing the Configuration
- 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
- [Optional] Configuration Without Boot
- Managing the EntityManager (EM)
- LocalContainerEntityManagerFactoryBean and Container-managed EMs
- JEE and JNDI Lookup of the EM
- Configuration and Vendor Adaptors
Session 6: Spring Transaction (TX) Management
- Overview
- Declarative TX Management (REQUIRED, etc.)
- TX Scope and Propagation
- Configuration and Boot Auto-Configuration
- Pointcut-based Configuration of Transactions
Session 7: Boot Configuration and Customization
- Logging and its Configuration
- Profiles
- Other Configuration
Session 8: Additional Spring/Boot Features
- Updates to Spring Core
- WebFlux / Reactive Web Framework