4_Spring_REST_API
4_Spring_REST_API
1
Chapter 4: SPRING BOOT - API
OUTLINE
1. Spring Beans (Build beans vs User-defined beans)
2. Dependency Injection
3. Application Context
4. IoC Container (Inversion of Control)
5. Validation
6. Logging
7. Profiles
2
What is Beans?
3
What is Beans? (cont.)
4
Spring Bean Life Cycle
Container Beans Dependencies Internal Spring Your Custom
started Instantiated Injected Processing Init Method
5
User Defined Spring Beans
1. @Controller, @Component, @Service, @Repository
2. @Bean, @Configuration
@Scope: singleton, prototype, request, session, global-session
Maven
7
Configuring Beans in the Container
XML-Based Configuration – Setter Injection
src/main/resources/beans.xml
8
Configuring Beans in the Container
XML-Based Configuration – Setter Injection – Object Injection
src/main/resources/beans.xml
9
Configuring Beans in the Container
XML-Based Configuration – Setter Injection – Object Injection
10
Configuring Beans in the Container
XML-Based Configuration – Collection Injection
11
Configuring Beans in the Container
XML-Based Configuration – Literal Values Injection
12
Spring’s Auto-wiring (cont.)
explicit
Can be omitted
13
Spring’s Auto-wiring (cont.)
14
Spring’s Auto-wiring (cont.)
15
Configuring Beans in the Container
Java-Based Configuration(cont.)
16
Configuring Beans in the Container
Java-Based Configuration(cont.)
17
Configuring Beans in the Container
Java-Based Configuration(cont.)
18
Configuring Beans in the Container
Annotation-Based Configuration
Create the XML configuration, applicationContext.xml (src/main/resources) to
enable annotations:
@Configuration
@ComponentScan(“fit.se.annotationbased")
public class AppConfig {
20
@Autowired xml config
Field Constructor
Setter
21
@Autowired Java-based config
22
@Autowired Disambiguation
23
@Autowired Disambiguation (cont.)
Error Caused by:
org.springframework.beans.fact
ory.NoSuchBeanDefinitionExcep
tion: No qualifying bean of type
'iuh.fit.se.autowired.disambigua
tion.
24
Disambiguation solution: @Qualifier
When there are multiple beans of the same type → use @Qualifier to avoid
ambiguity.
Spring uses the bean's name as a default qualifier value.
25
Disambiguation solution: @Primary
28
29
Validation
https://jakarta.ee/learn/docs/jakartaee-tutorial/current/beanvalidation/bean-validation/bean-validation.html
https://jakarta.ee/learn/docs/jakartaee-tutorial/current/beanvalidation/bean-
validation/bean-validation.html
30
Validation (cont.)
31
Validation (cont.)
32
Validation (cont.)
33
Data Transfer Object - DTO
34
What is Data Transfer Object?
▪ A data transfer object (DTO) is an object that carries data between
processes.
▪ It is particularly useful when you want to transfer data across different
layers of an application or over the network.
▪ DTOs normally are created as POJOs. They are flat data structures that
contain no business logic. They only contain storage, accessors and
eventually methods related to serialization or parsing.
35
Data Transfer Object - Advantages
▪ Advantages
• Decouple business logic from the communication layer.
• Hide unnecessary data or protect sensitive information.
• Avoid multiple calls to the remote server.
• Prevent breaking changes in the API during updates of the application
model.
▪ Dis-advantages:
• Overhead: Can introduce additional layers of complexity.
• Requires mapping: Often requires conversion from and to POJOs or
entities.
36
What is Data Transfer Object?
37
Data Transfer Object - Example
38
Data Transfer Object – Example (cont.)
39
Logging
Ref: https://docs.spring.io/spring-
boot/reference/features/logging.html
40
Logging
41
Logging (cont.)
42
Profiles
Ref: https://docs.spring.io/spring-
boot/reference/features/profiles.html
43
Profiles
▪ Spring Profiles provide a way to segregate parts of your application
configuration and make it be available only in certain environments.
44
Profiles
45
Swagger
springdoc-openapi
Ref: https://springdoc.org
46
Swagger – springdoc-openapi
application.properties
47
Swagger – springdoc-openapi (cont.)
48
Swagger – springdoc-openapi (cont.)
49
Q&A
50