Content
1. Introduction to Spring
• Java configuration and the Spring application context
• @Configuration and @Bean annotations
• @Import: working with multiple configuration files
• Defining bean scopes
• Launching a Spring Application and obtaining Beans
2. Spring JAVA Configuration: A Deeper Look
• External properties & Property sources
• Environment abstraction
• Using bean profiles
• Spring Expression Language (SpEL)
3. Annotation-based Dependency Injection
• Component scanning
• Autowiring using @Autowired
• Java configuration versus annotations, mixing.
• Lifecycle annotations: @PostConstruct and @PreDestroy
• Stereotypes and meta-annotations
4. Factory Pattern in Spring
• Using Spring FactoryBeans
5. Advanced Spring: How Does Spring Work Internally?
• The Spring Bean Lifecycle
• The BeanFactoryPostProcessor interception point
• The BeanPostProcessor interception point
• Spring Bean Proxies
• @Bean method return types
6. Aspect-oriented programming
• What problems does AOP solve?
• Defining pointcut expressions
• Implementing various types of advice
7. Testing a Spring-based Application
• Spring and Test-Driven Development
• Spring 5 integration testing with JUnit 5
• Application context caching and the @DirtiesContext annotation
• Profile selection with @ActiveProfiles
• Easy test data setup with @Sql
8. Data Accss and JDBC with Spring
• How Spring integrates with existing data access technologies
• DataAccessException hierarchy
• Spring‘s JdbcTemplate
9. Database Transactions with Spring
• Transactions overview
• Transaction management with Spring
• Transaction propagation and rollback rules
• Transactions and integration testing
10. Spring Boot Introduction
• Introduction to Spring Boot Features
• Value Proposition of Spring Boot
• Creating a simple Boot application using Spring Initializer website
11. Spring Boot Dependencies, Auto-configuration, and Runtime
• Dependency management using Spring Boot starters
• How auto-configuration works
• Configuration properties
• Overriding auto-configuration
• Using CommandLineRunner
12. JPA with Spring and Spring Data
• Quick introduction to ORM with JPA
• Benefits of using Spring with JPA
• JPA configuration in Spring
• Configuring Spring JPA using Spring Boot
• Spring Data JPA dynamic repositories
13. Spring MVC Architecture and Overview
• Introduction to Spring MVC and request processing
• Controller method signatures
• Using @Controller, @RestController and @GetMapping annotations
• Configuring Spring MVC with Spring Boot
• Spring Boot packaging options, JAR or WAR
14. Rest with Spring MVC
• An introduction to the REST architectural style
• Controlling HTTP response codes with @ResponseStatus
• Implementing REST with Spring MVC, @RequestMapping, @RequestBody and @ResponseBody
• Spring MVC’s HttpMessageConverters and automatic content negotiation
15. Spring Security
• What problems does Spring Security solve?
• Configuring authentication
• Implementing authorization by intercepting URLs
• Authorization at the Java method level
• Understanding the Spring Security filter chain
• Spring security testing
16. Actuators, Metrics and Health Indicators
• Exposing Spring Boot Actuator endpoints
• Custom Metrics
• Health Indicators
• Creating custom Health Indicators
• External monitoring systems
17. Spring Boot Testing Enhancements
• Spring Boot testing overview
• Integration testing using @SpringBootTest
• Web slice testing with MockMvc framework
• Slices to test different layers of the application
18. Spring Security Oauth (Optional Topic)
• OAuth 2 Overview
• Implementing OAuth 2 using Spring Security OAuth
19. Reactive Applications with Spring (Optional Topic)
• Overview of Reactive Programming concepts
• Reactive Programming support in Spring
• Using Spring’s reactive WebClient