- 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: