springRoadMap
springRoadMap
html
mvnw and mvnw.cmd are Maven wrapper files allow you to run
maven project. If correct version of Maven is not present on your
computer --> automatically go to the internet and download that
version. There are two maven's files: mvnw.cmd for MS Windows
and mvnw.sh for Linux Or Mac.
When we use change code the server needs to restart to reflect the
new code --> Spring boot dev tool comes into play. It helps
automatically restart when your code is changed --> add
dependency to your pom file
Actuator endpoints let you monitor and interact with your application.
Spring Boot includes a number of built-in endpoints and lets you add your
own.
more endpoints:
https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/
production-ready-endpoints.html#:~:text=Actuator endpoints let you
monitor,can be enabled or disabled.
What’s about security because when we expose a lot of info —> this is not
good
Spring IOC
Inversion of Control
https://www.udemy.com/course/spring-hibernate-tutorial/?
couponCode=MTST7102224A2
Spring MVC
HTTP Request
o Get
o Post
o Put
o Patch
o Delete
Annotations
https://roadmap.sh/spring-boot
https://roadmap.sh/spring-boot
Spring Architecture
https://www.interviewbit.com/blog/spring-boot-architecture/
Spring data
https://www.udemy.com/course/hibernate-jpa-tutorial-for-beginners-in-
100-steps/?couponCode=MTST7102224A2
Books: **Java Persistence with Spring Data and Hibernate (616 pages)**
https://medium.com/edureka/advanced-java-tutorial-f6ebac5175ec
Spring JPA
Caching
Caffeine
Distributed: Java-Redis
Search Engines
ElasticSearch
Spring security
https://docs.spring.io/spring-security/reference/index.html
At this point, some details are already part of your understanding, but the
forms of logging are increasingly evolving and organizations already want
to take advantage of a pre-existing registration keycloak, or even a login
that Access Lightweight Directory Access Protocol (LDAP) directory
services.
You should understand how to work with OAuth2 and with JWT and access
control,
And how do cryptographic algorithms that generate JWT tokens work, such
as a symmetric algorithm (HMAC SHA-256), or signing JWT with an
asymmetric algorithm (RSA SHA-256), and how spring Security helps you
verify user authentication with database data.
You can add public Claims in the JWT Payload (user name) and understand
how you can plan a topology of groups and system permissions, which
when used with Method Security can Restricting API access using
@PreAuthorize and SpEL
Authentication
https://docs.spring.io/spring-security/reference/features/authentication/
index.html
https://www.baeldung.com/spring-security-basic-authentication
Authorization
https://docs.spring.io/spring-security/reference/servlet/authorization/
index.html
Advanced authorization:
https://docs.spring.io/spring-security/site/docs/5.2.11.RELEASE/reference/
html/authorization.html
JWT
https://www.toptal.com/spring/spring-security-tutorial
https://springframework.guru/jwt-authentication-in-spring-microservices-
jwt-token/
https://www.tutorialspoint.com/spring_security/
spring_security_with_jwt.htm
OAuth2
https://spring.io/guides/tutorials/spring-boot-oauth2
https://www.tutorialspoint.com/spring_boot/
spring_boot_oauth2_with_jwt.htm
https://www.tutorialspoint.com/spring_security/
spring_security_with_oauth2.htm
https://www.javatpoint.com/spring-boot-starters
https://www.baeldung.com/spring-boot-starters
Autoconfiguration
https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-
auto-configuration.html
https://www.javatpoint.com/spring-boot-auto-configuration
Actuators
https://www.baeldung.com/spring-boot-actuators
https://www.javatpoint.com/spring-boot-actuator
Embedded Server
https://subscription.packtpub.com/book/web-development/
9781789132588/3/ch03lvl1sec24/embedded-servers
https://www.springboottutorial.com/java-programmer-essentials-what-is-
an-embedded-server
https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/
howto-embedded-web-servers.html
Spring boot
Microservices
https://www.udemy.com/course/microservices-with-spring-boot-and-spring-
cloud/?couponCode=MTST7102224A2
Reference
o Xây dựng khả năng chịu lỗi và phản hồi lỗi dùng circuit
Breaker Pattern với Netfix Hystrix
o Logstash là gì
o Kiểm tra lại tổng thể các thành phần trong hệ thống
o Tổng kết kiến thức và khuyến khích học viên đặt các
câu hỏi mở rộng về kiến trúc hệ thống
Microservices Patterns
!https://media.dev.to/dynamic/image/width=800%2Cheight=
%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F
%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles
%2Ffswt997gv9yoplugjcs4.png
Shared database
API Composition
Saga
CQRS
Domain event
Event sourcing
Transactional outbox
Polling publisher
Books
Spring cloud
o HTTP Clients(OpenFeign)
OpenTememetry
Prometheus
Grafana
Zipkin
ELK stack
o Resilient microservices:
SAGA pattern
BulkHead
!https://media.dev.to/dynamic/image/width=800%2Cheight=
%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F
%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles
%2Fdqbyv9o7hfdk3ghtvzj1.png
This image above is just a model that shows us which parameters and
which urls are available to be used in the project, so in most projects the
swagger will be activated and requested by the analysis and business
rules team.
Architecture
Kafka
RabbitMQ
DevOps
o Docker
https://www.udemy.com/course/docker-course-with-java-and-spring-boot-
for-beginners/?couponCode=MTST7102224A2
Bắt đầu với Docker: Các bước ban đầu và điều kiện tiên
quyết.
Cài đặt và Thiết lập Docker: Hướng dẫn chi tiết để thiết
lập Docker.
Thực hành Docker: Các bài tập và thực hành tập trung
vào các lệnh Docker cơ bản.
Các Tính năng Nâng cao của Docker Run: Minh họa các
tính năng nâng cao của Docker Run.
Thực hành: Các bài tập thực hành sử dụng lệnh Docker
Run.
Thực hành: Các bài tập tập trung vào Docker Images.
Thực hành: Các bài tập thực hành về lưu trữ Docker.
o AWS/Azure/GCP
Compute Services
Storage Services
Database Services
Network Services
…
Lesson 4. Compute
43. Lab:Xây dựng máy ảo Linux trên AWS | AWC EC2 Linux
Virtual Machine
44. Lab:
Xây dựng máy ảo Windows trên AWS | AWC EC2
Windows Virtual Machine
Lesson 5. Storage
53. Lab:
Setup S3 bucket to be backup storage for EC2 Linux
and EC2 Windows
Lesson 6. Databases
61. Lab:
Setup RDS Database as a database for EC2 Linux to
keep Wordpress’s data
68. Subnets
88. Lab:
Setup EFS as a Storage server for file uploads from
WordPress service in EC2 Linux
89. Lab:
Setup AWS Lambda to resize picture resolution from
EFS Storage
Lesson 9. Management Fundamentals
95. Lab:
Build monitoring to get Server information from
EC2 Linux, Database
133. EKS
134. ECR
147. Credits
149. Reports
o Kubernetes
Service Networking
Introduction of ArgoCD
Sử dụng Jenkins: Khám phá các ứng dụng khác nhau của
Jenkins trong tự động hóa, tích hợp, và triển khai.
Labs:
Labs:
Labs:
Benefits of IaC.
Deploying Your First Terraform Configuration:
Prometheus là gì
Lab: Triển khai node exporter, query các metrics trên Prometheus
Testing
https://www.udemy.com/course/testing-spring-boot-beginner-to-guru/?
couponCode=MTST7102224A2
JPA Test
Spring JPA (Java Persistence API) is a library that makes it easy to work
with databases and other data stores in a Spring application. Spring JPA
uses the Java Persistence API (JPA) to interact with databases and provides
an abstraction layer to work with different data stores.
There are several ways to test the persistence layer using Spring JPA. One
way is to use in-memory databases, such as H2 or Derby, which can be
used during testing to mimic the production database. This allows the
tests to run quickly and eliminates the need to set up a separate test
database. Another way is to use real databases and to use TestContainers
to spin up a real instance of the database for testing purpose.
Additionally, Spring provides the JPA Testing Utilities, which provides a set
of utility classes and annotations to test JPA-based persistence layer
easily, such as @DataJpaTest, @AutoConfigureTestDatabase, and
TestEntityManager classes. These utilities can be used to create, read,
update, and delete entities, perform JPA queries, and interact with the
database during the test.
Testing the persistence layer separately from the rest of the application
allows to catch any issues early in the development process, making it
easy to identify and fix bugs and improve the quality of the application.
https://reflectoring.io/spring-boot-data-jpa-test/https://
www.bezkoder.com/spring-boot-unit-test-jpa-repo-datajpatest/
https://www.baeldung.com/spring-boot-testing
@SpringBootTest annotation
https://reflectoring.io/spring-boot-test/
https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/
context/SpringBootTest.html
MockMVC
https://zetcode.com/spring/mockmvc/
https://howtodoinjava.com/spring-boot2/testing/spring-boot-mockmvc-
example/
https://www.baeldung.com/integration-testing-in-spring
@MockBean Annotation
https://www.baeldung.com/java-spring-mockito-mock-mockbean
https://howtodoinjava.com/spring-boot2/testing/spring-mockbean-
annotation/
https://docs.spring.io/spring-boot/api/java/org/springframework/boot/
test/mock/mockito/MockBean.html
Mocking
https://site.mockito.org/
TestContainers
Integration Tests
Speaking of testing as the saying goes and "rain in the wet", we always
need to be sharp in carrying out tests, here the QA or also known testers,
the guy who will always be your best friend (does not contain irony, he will
lead you to be better , every sprint).
When running an integration test with Spring Boot, we always think
of JUnit and AssertJ, but we have a huge possibility when we are
working with tests, below is a list of some that can help you and possibly
your next job may have one of them or more, already implanted or waiting
for you to do it.
1. JUnit
2. REST Assured
3. Mockito
4. Selenium
5. TestNG
6. Spock Framework
7. Cucumber
8. Spring Test
9. DBUnit
10. Testcontainers
11. AssertJ
12. Awaitility
13. Wiser
14. Memoryfilesystem
15. WireMock
I could talk about many here, I would even post several, on the subject,
but that is another moment.
https://spring.io/projects/spring-kafka
Other topics
Caching
https://viblo.asia/p/caching-dai-phap-1-nac-thang-len-level-cua-developer-
V3m5WdO8KO7
Memory management
https://www.udemy.com/course/java-application-performance-and-
memory-management/?couponCode=MTST7102224A2
Thymeleaf
https://www.udemy.com/course/mastering-thymeleaf-with-spring/?
couponCode=MTST7102224A2
Garbage Collector
Basic Linux OS (Kiến thức căn bản về hệ điều hành Linux OS)
o Thực hành cài đặt hệ điều hành Linux và các lựa chọn
trong quá trình cài đặt (CentOS)
o Thực hành cài đặt hệ điều hành Linux và các lựa chọn
trong quá trình cài đặt (Ubuntu)
Day 2 - Command line Linux OS basic (Các khối lệnh trong Linux -
Day 1)
Day 3 - Command line Linux OS basic (Các khối lệnh trong Linux -
Day 2)
o Thực hành cài đặt/gỡ cài đặt gói thông qua yum/apt-get
Real-time communication
o atmosphere
o webbit
Task scheduling
o Aurora
Java Reflection
https://medium.com/edureka/java-reflection-api-d38f3f5513fc
Design patterns
Test-Driven Development with Java
@Autowired
@bean
@Component
@ComponentScan
@Configuration
@ConfigurationProperties
@CookieValue
@CrossOrigin
@DeleteMapping
@EnableAutoConfiguration
@GetMapping
@lazy
@PathVariable
@primary
@PostMapping
@profile
@PropertySource
@PropertySources
@PutMapping
@Qualifier
@Required
@RestController/@Controller
@Repository
@RequestBody
@RequestMapping
@RequestParam
@scope
@Service
@SpringBootApplication
@Value
https://github.com/weder96/spring-boot-annotation-tips/tree/main/
documentation/Part01/us-en
Java Techie which can help you understand all these Spring boot
Learn Kafka
Metrics
Tracking
For Context Propagation Tracing with Micrometer Tracing, we need to
choose a tracer bridge (tracer is a library used to handle the lifecycle of a
span).
logs
!https://media.dev.to/dynamic/image/width=800%2Cheight=
%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F
%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles
%2Fwk5z8f7tgsoyk67j5jt0.jpg
!https://media.dev.to/dynamic/image/width=800%2Cheight=
%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F
%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles
%2Fwgpo62hjgcqp07mi05me.jpg
!https://media.dev.to/dynamic/image/width=800%2Cheight=
%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F
%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles
%2Fvs0lsic582s41gs6sfys.jpg
Relevant knowledge