Spring Container, dependency and IOC
DI Pattern
Spring “ApplicationContext”
Spring Beans Lifecycle
BeanPostProcessor/ BeanFactoryPostProcessor
Proxies
JavaConfig
SpEL (Spring Expression Language)
Aspect Oriented Programming
The concept of AOP and Cross-cutting concerns
Pointcuts, Join points, Advice, Aspects, and Weaving
@Aspect annotation
@EnableAspectJAutoProxy annotation
ProceedingJoinPoint
JDBC, Transactions, and JPA Spring Data
JDBC Datasources
JDBC Templates
Transactions : local vs global transactions
@Transactional annotation
Rollback Policies. Default Rollback policies with JUnit 4 and JUnit 5
The ORM paradigm and the JPA specification
Which PlatformTransactionManager(s) can you use with JPA?
The @PersistenceContext annotation
Spring Data Repositories
@Query annotation
Spring Boot
What is Spring Boot. Why is it opiniated ?
Spring Boot starters
Understanding Spring Boot autoconfigurations
Java properties and YML files
The @EnableAutoConfiguration annotation
The @SpringBootApplication annotation
Spring Boot Test : Testing the web tier with @WebMvcTest
Spring Boot Test : Testing the data tier with @DataJpaTest
Spring Actuator : Endpoints, health indicators, metrics
Spring Actuator : Creating custom health indicators an custom metrics
Spring MVC and the Web Layer
Understanding the MVC pattern
The DispatchetServlet
The web application context
The differences between @RequestParam and @PathVariable
What is the Model
View Resolvers and Views
Security
Authentication and Authorization techniques
What is the delegating filter proxy?
What is the security filter chain?
Understanding the security context?
What does the ** pattern in an antMatcher or mvcMatcher do?
Implementing method-level security
Using @secured, @PreAuthorized and @RolesAllowed annotations
REST
What is REST ? What is a resource?
What does CRUD mean?
Identifying safe and idempotent REST Operations
Spring Boot starter for a Spring REST application
Using @Controller and @RestController annotations
Mapping paths with @RequestMapping
HTTP status codes for a GET/POST/PUT/DELETE operations
Writing clients using RestTemplate
Testing
What type of tests typically use Spring?
How can you create a shared application context in a JUnit integration test?
When and where do you use @Transactional in testing?
using mock frameworks such as Mockito
How is @ContextConfiguration used?
How does Spring Boot simplify writing tests?
What does @SpringBootTest do? How does it interact with @SpringBootApplication and @SpringBootConfiguration?