Úvod do Springu
- Java Configuration & Spring context
- Anotace @Configuration, @Bean, @Import
- Bean scope (singleton, prototype, ...)
- Vytvoření Spring contextu, spuštění Spring aplikace a získání Spring Bean
- Spring profiles
- External properties
Dependency Injection pomocí anotací
- Component scanning
- Autowiring pomocí @Autowired
- @Component, @Service, @Controller anotace
- Java Configuration vs. anotace vs. XML konfigurace (legacy)
- Lifecycle annotations: @PostConstruct, @PreDestroy
- Spring Bean Lifecycle
- Spring Bean Proxies
Aspect Oriented Programming
- Jaké problémy řeší AOP?
- Implementace Spring AOP a z ní vyplývající omezení / implementační vlastnosti
- Anotace, které jsou postavené na AOP
Data Access & JDBC + Spring & JPA (Hibernate)
- JdbcTemplate
- JPA & Spring (Boot)
- Spring Data JPA (JpaRepository interface)
- Životní cyklus entity
Databázové transakce
- @Transactional
- Transaction management & Spring
- Šíření transakcí, commit, rollback
Spring Boot
- Tvorba webové Spring Boot aplikace
- Spring Boot starters
- Auto configuration
- Změna konfigurace pomocí properties, yaml, parametrů z příkazové řádky
- Packaging Spring Boot aplikace do Docker image
- Spring Boot Actuator & integrace na Prometheus
Testování Spring aplikace
- Spring a TDD (Test Driven Development)
- Spring 5 & integrační testy s JUnit 5
- @ActiveProfiles, @Sql
- Testování Spring Boot aplikací
- Testcontainers
Spring MVC a tvorba REST aplikací
- Úvod do REST architektury
- @RestController, @GetMapping, @PostMapping, ...
- Exception handling pomocí @ExceptionHandler a @ControllerAdvice
- OpenAPI (Swagger)
- Třívrstvá architektura
- DTO (Data Transfer Object) & MapStruct (následovník Dozer, Orika)
- Bean Validation
Spring Security
- Obecně k bezpečnosti webových aplikací
- Konfigurace Spring Security
- Konfigurace certifikátů u Spring Boot aplikací
- Autorizace na úrovni URL a metod