- BASIC WEBAPP
- SPRING BOOT AOP
- SPRING BOOT BATCH
- SPRING BOOT CACHE
- SPRING BOOT THYMELEAF
- SPRING BOOT JDBC-TEMPLATE
- SPRING BOOT JMS
- SPRING BOOT JPA
- SPRING BOOT MONGODB
- SPRING BOOT R `EST
- SPRING BOOT SCHEDULER
- SPRING BOOT TRANSACTIONS
- SPRING BOOT VALIDATOR
- Spring basics
- Spring core
- Spring MVC (JSP/Thymeleaf)
- Spring Boot
- Spring Data
- Spring Security
- Webservices
- Angular/React integration [optional]
- Generate Sample Spring Project ✔️
- Import to IDE ✔️
- Try to build & Try to run ✔️
- Check exposed method via browser ✔️
- Try to expose actuator ✔️
- Validate healthcheck ❌
- Add CommandLineRunner ✔️
- Try to print all beans ✔️
- Change log level for some packages âś”
- Define log level for our package âś”
- Write simple junit test âś”
- Expose Greeting controller method + write test, for example mockMvc âś”
- Define DAO layer with 2 database types (H2, HARDCODED) chosen via factory ❌
- Pass usage of dedicated db via property file âś”
- Add dependency like lombok + define loggers âś”
- Add scheduler for simple logging âś”
- Chuck Norris Jokes! Log them in scheduler from website âś”
- Add serialization/deserialization âś”
- Implement Mapstruct mapping between dao & dto âś”
- Add proper layers implementation âś”
- Change properties file to yml file ❌
- Different ways of autowiring beans âś”
- Sample DB usage (List of Jokes?) âś”
- Service Layer (RestTemplate, maybe HttpClient) âś”
- Tests for service layer âś”
- Chuck Norris Jokes Collector controller implementation âś”
- Usage of: http://api.icndb.com API âś”
- REST GET âś”
- REST POST âś”
- REST PUT ❌
- REST DELETE ❌
- Load json data from file and use in test to compare values ❌
- Save data to file in service ❌
- Hexagonal architecture proposal for application (separated module) ❌
- Validation request (POST) âś”
- Deployment to Cloud: ❌
- Repository âś”
- Profiles on repository (Mock DB + H2) âś”
- Define different configurations for repos âś”
- Basic tests âś”
- H2 DB schema via sql file âś”
- Connect with Service âś”
- Connect withDedicatedController âś”
- Pass custom properties via @Value annotation âś”
- Mapstruct usage âś”
- Manual mapper âś”
- Implement Scheduler âś”
- save random jokes to DB âś”
- Aspects âś” 2. LogExecutionTimeAspect âś” 3. LogBefore some method âś” 4. Our own annotation âś”
- Validation (@Valid) âś”
- ConstraintViolation âś”
- JMS Listener + Producer âś”
- Thymeleaf + Form âś”
- Mapstruct âś”
- Add to project - do mapper âś”
- Validation Request/Response âś”
- H2 Added âś”
- NoSQL - presentation âś”
LAST CLASSES:
- Reminder what we did (CSV Printer)
- BindingResult support in forms âś”
- Reflection
- SpringSecurity - how to turn on
- NoSQL - MongoDB Workshops ** Cloud setup âś”
- Cache + Cacheable
- jdbcTemplate autowired + execute ** pure insert ** pure select
- Transactional
- Add WebJars
- Add webjar bootstrap:
<!-- https://mvnrepository.com/artifact/org.webjars/bootstrap -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>5.1.3</version>
</dependency>
Task 1 - REST-SERVICE
Rest Controller with get method exposed on /greeting address + parameter support
deps:
- spring-boot-starter-web
- spring-boot-starter-test
- com.jayway.jsonpath
Task 2 - SPRING BOOT
Hello Controller + prompting in console all beans definition
deps:
- spring-boot-starter-web
- spring-boot-starter-actuator
- spring-boot-starter-test
- spring-test
Task 3 - JDBC-TEMPLATE
use JDBCTemplate to:
- drop table if exists
- create tables
- use select
- batch insert sample
- map data between object and db
deps:
- spring-boot-starter-jdbc
Task 4 - JPA
Save entity via repository / spring data by manager in dao layer
deps:
- spring-boot-starter-data-jpa
- spring-data
- com.h2database
Task 5 - SCHEDULER
Scheduler + cron expressions
deps: spring-context
Task 6 - TRANSACTIONS
Simple app + @Transactional usage
deps:
- com.h2database
Task 7 - ASYNC
Async methods + restTemplate usage
deps:
- spring-web
Task 8 - BATCH
Based on: http://malsolo.com/blog4java/?p=260
we will write app which will import data from csv and save them in db using jobs
Usage:
- JdbcBatchItemWriter
- ItemProcessor
- FlatFileItemReader
- jdbcTemplate
- JobExecutionListenerSupport
deps:
- spring-boot-starter-batch
Task 9 - CACHE
Simple task to add @Cacheable mechanism
deps:
- spring-boot-starter-cache
Task 10 - VALIDATOR
Write simple validator extending class WebMvcConfigureAdapter + integration tests + annotations javax.validation.constraints
deps:
- spring-boot-starter-thymeleaf
- hibernate-validator
Task 11 - MongoDB
Connector to MongoDB
Task 12 - JMS
Refactor architecture to use JMS
deps:
- spring-boot-starter-activemq
- activemq-broker
- jackson-databind
Task 13 - FILE-UPLOADER
File Uploader which will:
- download file chosen via form
- list downloaded files
- download file sent by user
- delete chosen files
deps:
- spring-boot-starter-thymeleaf
Why do we even need Spring -> https://www.youtube.com/watch?v=ySXlsZDJMgc
DataFaker to generate many fake data for reports: https://jworks.io/datafaker-an-alternative-to-production-data/
how to test architecture -> https://www.archunit.org/
Different implementations (queue vs topic) and usage for consumed messages: save to DB, save to PDF, save to excel, send via mail.
For further reference, please consider the following sections:
The following guides illustrate how to use some features concretely: