Introduction to Spring
- Java Configuration & Spring context
- Annotations @Configuration, @Bean, @Import
- Bean scope (singleton, prototype, ...)
- Create Spring context, launch Spring application and get Spring Bean
- Spring profiles
- External properties
Dependency Injection using annotations
- Component scanning
- Autowiring using @Autowired
- @Component, @Service, @Controller annotation
- Java Configuration vs. annotation vs. XML configuration (legacy)
- Lifecycle annotations: @PostConstruct, @PreDestroy
- Spring Bean Lifecycle
- Spring Bean Proxies
Aspect Oriented Programming
- What problems does AOP solve?
- Spring AOP implementation and resulting limitations / implementation features
- Annotations that are based on AOP
Data Access & JDBC + Spring & JPA (Hibernate)
- JdbcTemplate
- JPA & Spring (Boot)
- Spring Data JPA (JpaRepository interface)
- Entity life cycle
Database transactions
- @Transactional
- Transaction management & Spring
- Transaction dissemination, commit, rollback
Spring Boot
- Creating a web Spring Boot application
- Spring Boot starters
- Auto configuration
- Change configuration using properties, yaml, command line parameters
- Packaging Spring Boot application to Docker image
- Spring Boot Actuator & Integration at Prometheus
Spring application testing
- Spring and TDD (Test Driven Development)
- Spring 5 & integration tests with JUnit 5
- @ActiveProfiles, @Sql
- Testing Spring Boot applications
- Test containers
Spring MVC and creation of REST applications
- Introduction to REST architecture
- @RestController, @GetMapping, @PostMapping, ...
- Exception handling using @ExceptionHandler and @ControllerAdvice
- OpenAPI (Swagger)
- Three-tier architecture
- DTO (Data Transfer Object) & MapStruct (successor to Dozer, Orika)
- Bean Validation
Spring Security
- General web application security
- Spring Security configuration
- Certificate configuration for Spring Boot applications
- URL and method level authorization