SlideShare a Scribd company logo
2
Most read
10
Most read
A Complete Spring Boot Course for beginners
https://spring.io/
PAGE 1
Sufyan Sattar
Software Engineer
sufyan.sattar@tkxel.com
Course
Outline
Introduction to Spring Boot and Background
Web Services (SOAP and Restful)
JPA/Hibernate and Custom SQL Queries
H2 Database (In memory database)
PostgreSQL and MySQL
PAGE 2
Introduction to Spring Boot
 It is an application framework used for developing Enterprise Applications.
 It makes programming Java quicker, easier, and safer for everybody.
 It provides a flexible way to configure Java Beans, XML configurations, and Database Transactions.
It provides powerful batch processing and manages REST endpoints. In Spring Boot, everything is
auto-configured; no manual configurations are needed.
 Termimology:
 Spring Initializer (https://start.spring.io/)
 Starter Projects
 Auto Configuration
 Actuators
 Developer Tools (DevTools)
PAGE 3
 Setting up Spring Web projects was not easy
 Define Maven Dependencies and manage versions for the framework (spring web_mvc, Jackson)
 Define web.xml (src/main/webapp/WEB_INF/web.xml)
 Define front controller for spring framework (Dispatcher Servlets)
 Define a Spring content.xml (src/main/webapp/WEB_INF/todo_servlet.xml)
 Define all beans
 Define component scan
 Install Tomcat or another web server like Glassfish.
 Deploy and run the application in Tomcat
PAGE 4
World Before Spring Boot
 Spring Boot Starter Projects
 It helps you get the project up and running quickly.
 Web Applications (Spring boot starter web)
 Rest API (Spring boot starter web)
 Talk to database using JPA (spring boot starter data JPA)
 Talk to database using JDBC (spring boot starter JDBC)
 Spring Boot Auto Configurations
 It provides a basic configuration to run your app using the framework defined in maven dependencies.
 We can override our own configuration
 Auto configuration is decided based on which framework is in the classpath
 E.g. (spring boot starter web)
 Dispatch Servlet
 Embeded Servlets Container – Tomcat is the default server
 Default Error Page
 Bean to JSON conversion
PAGE 5
How does Spring Boot do its magic?
 Monitor and manage your application in your production.
 Provides a number of endpoints:-
 Beans – Complete the list of Spring beans in your app
 Health – Application health information
 Metrics – Application metrics
 Mapping – Details around Request Mapping
PAGE 6
Spring Boot - Actuators
 Increase developer productivity
 Save timing
 Only local machine or debug variant
Spring Boot - Dev Tools
PAGE 7
Spring Framework vs Spring Boot
 Spring Framework
 The Spring framework provides comprehensive infrastructure support for developing Java applications.
 It's packed with some nice features like Dependency Injection, and out-of-the-box modules like:
 Spring JDBC
 Spring MVC
 Spring Security
 Spring ORM
 Spring Test
 Spring Boot
 Spring Boot is basically an extension of the Spring framework, which eliminates the boilerplate configurations
required for setting up a Spring application.
 Here are just a few of the features in Spring Boot:
 Opinionated ‘starter' dependencies to simplify the build and application configuration
 Embeded Server to avoid complexity in application deployment
 Metrics, Health checks, and external configuration
 Automatic config for Spring functionality
Web Services
 Design for machine-to-machine or application-to-application interaction.
 Should be interoperable – Not platform dependent
 Should allow communication over a network
Web Service Definition
Request/Response Format Request Structure Response Structure Endpoint
(XML/JSON)
Note
 Dispatcher Servlets handle the request/response
 Spring boot auto configuration handle/configure dispatcher servlets
 Jackson converts the Java Bean to JSON and vice versa
PAGE 8
PAGE 9
Web Service Task
 Social Media Application Usecase : User ---> Post
 Retrieve all users GetRequest /users
 Create a user PostRequest /users
 Retrieve a specific user GetRequest /users{id}
 Delete a user DeleteRequest /users{id}
1. Create a Controller. @RestController
2. Create methods for API and annotate with
1. @GetMapping
2. @PostMapping
3. @PutMapping
4. @DeleteMapping
PAGE 10
Web Service Topics
 HATEOAS (Hyper Media as the Engine of Application State)
 HATEOAS will add value to you API when used by client. The links provided by HATEOAS gives you the possibilities to
different parts (resources) of your API without needing to hardcore those links in your apps client code.
 We use WebMvcLinkBuilder and link any method/API of our
controller in the response.
 E.g. I request http://localhost:8080/jpa/users/1/posts/1
 Exception Handling
 Give a proper response to the user when an exception occurs with the status code.
 We can use ResponseEntityExceptionHandler to provide centralized exception handling across all @RequestMapping
methods through @ExceptionHandler methods.
PAGE 11
Web Service Topics
 Validation for Rest API
 We can add @Valid to validate our request
 @Sized(min=2) @Email @Past
 We just place annotation to the variable
 Internationalization for Restful Services
 We create different resources file w.r.t languages e.g: messages_fr.properties.
 In messages.properties file we write string in different language.
 Content Negotiation
 We can implement XML support in out Restful API.
 Client will sent Accept Header with application/xml value.
PAGE 12
Web Service Topics
 Swagger UI
 baseurl/swagger-ui/index.html
 OpenAPI create all the documentation of your Restful API in our application
 Swagger UI gets that data and represents in GUI
 OpenAPI definition: baseurl/v3/api-docs
 Monitory API with Spring Boot Actuators
 base_url/actuator
 We can manual configuration by adding some lines
 in application.properties file
 HAL Explorer
 Visualizing all API
 Its show all links in visual format
 You can also see HATEOAS links in visual formats
 base_url/explorer/
PAGE 13
Web Service Topics
 Filtering
 Static Filtering
 Just place @JsonIgnore above the variable
 You can also place above class name and add multiple parameter name
 Dynamic Filtering
 When you hide/show data in response w.r.t to response
 We use SimpleBeanPropertyFilter, FilterProvider, and MappingJacksonValue
 Versioning
 Url versioning
 Params versioning
 Customer Header versioning
 Produces versioning (mine-type versioning)
PAGE 14
Web Service Topics
 Security
 After Enable security web services will return 401 unauthorized status.
 Request all API with basic Auth (username=user and password=from console)
 Add configuration for static password not change when server restart
 security.username=username , security.password=password
JPA/Hibernate and Custom Query
 JPA is the specification and define the way to manage relational database using Java Objects
 Hibernate is the implementation of Java Persistence API. It is the ORM tool to persist Java objects
into relational database
 Implementation/Annotations:
 @Entity
 @Table(name=“employee”)
 @Column(name=“first_name”)
 EmptyConstructor
 All Argument Constructor
 Setter/Getter
 @OneToMany(mappedBy=“user”, cascade=Cascade.ALL)
 @ManyToOne()
 @JoinColoum
 @Id
 @GeneratedValue(strategy= GenerationType.IDENTITY)
 @Repository (interface UserRepo implement JpaRepository<User, Integer>)
PAGE 15
JPA/Hibernate and Custom Query
 JPA Repository:
 Its interface having default storage methods like save(), findAll(); findBtId(), DeleteById() etc.
 Its provides us the ORM for storing data into relational database.
 We can also write custom query for fetching data from database.
 JPA provided us @Query annotation.
 Create interface and implement JpaRepository<Object, Integer>)
 Inside repo you can write function and custom query
 Custom Query:
@Query(“SELECT * FROM posts WHERE user_id=:user_id AND id=:post_id”, nativeQuery=true)
 Post getPostDetailsOfSpecifcUser(
@Param(“user_id”) Integer user_id,
@Param(“post_id”) Integer post_id
);
PAGE 16
H2 Database
 H2 is inmemory database provided by Spring Boot.
 H2 database name randomly generated each time you restart the run or run application.
 We can make it constant by manual configuration:
 Spring.datasource.url=“jdbc:h2:mem:mytestdb”
 Sometime we need more fined grained control over tha database alterations and that why we create
data.sql and schema.sql
 data.sql:- We rely on default schema created by Hibernate/JPA. We add data into data.sql by writing SQL
queries into data.sql file
 schema.sql:- We don`t rely on default schema creation mechanism. We create own schema i.e table and
coloums etc. Spring will pickup this file and create schema
 Note: Script base initialization i.e through data.sql and schema.sql, and hibernate default initialization
together can cause some issues.
 We disable hibernate automatic schema creations with manual configuration.
 spring.jpa.hibernate.ddl-auto=none
 If you want to use both hibernate automatic creation schema and script based schema creation and data
population. You can use
 spring.jpa.defer-datasource-initialization=true
 Script base initialization is perform by default only for embeded databases.
PAGE 17
PostgreSQL and MySQL with Spring Boot
 Configuration with PostgreSQL
 spring.datasource.url=jdbc:postgresql://localhost:5432/employees
 spring.datasource.username=postgres
 spring.datasource.password=admin
 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
 Configuration with MySQL
 spring.datasource.url=jdbc:mysql://localhost:3306/employees
 spring.datasource.username=root
 spring.datasource.password=admin
 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
PAGE 18

More Related Content

PDF
Java SpringBoot Book Build+Your+API+with+Spring.pdf
PDF
A presentationon SPRING-BOOT and CRUD operation
PPTX
Spring Boot and REST API
PDF
Ajug - The Spring Update
PDF
The Spring Update
PPTX
Spring data jpa are used to develop spring applications
PDF
Rediscovering Spring with Spring Boot(1)
PDF
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
Java SpringBoot Book Build+Your+API+with+Spring.pdf
A presentationon SPRING-BOOT and CRUD operation
Spring Boot and REST API
Ajug - The Spring Update
The Spring Update
Spring data jpa are used to develop spring applications
Rediscovering Spring with Spring Boot(1)
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf

Similar to SpringBootCompleteBootcamp.pptx (20)

PDF
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
PPTX
SoftwareUniversity seminar fast REST Api with Spring
DOCX
Spring interview questions
PDF
building-rest-api-with-spring-boot-in28minutes-presentation.pdf
PPTX
Spring Web Presentation 123143242341234234
PPTX
Spring 1 day program
PDF
Getting Started With Spring Framework J Sharma Ashish Sarin
PPTX
Spring_Boot_Microservices-5_Day_Session.pptx
PPTX
Spring Test Framework
PPTX
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
PPTX
Building a REST Service in minutes with Spring Boot
PDF
Introduction to Spring Boot
PDF
PUC SE Day 2019 - SpringBoot
PDF
Web Development With Java Using Hibernate Jsps And Servlets Tim Downey
PPT
Spring, web service, web server, eclipse by a introduction sandesh sharma
PPTX
Learn Spring Boot With Bisky - Intoduction
PPTX
unit_1_spring_1.pptxfgfgggjffgggddddgggg
PPTX
Spring boot
PDF
Spring boot jpa
PDF
Toms introtospring mvc
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
SoftwareUniversity seminar fast REST Api with Spring
Spring interview questions
building-rest-api-with-spring-boot-in28minutes-presentation.pdf
Spring Web Presentation 123143242341234234
Spring 1 day program
Getting Started With Spring Framework J Sharma Ashish Sarin
Spring_Boot_Microservices-5_Day_Session.pptx
Spring Test Framework
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Building a REST Service in minutes with Spring Boot
Introduction to Spring Boot
PUC SE Day 2019 - SpringBoot
Web Development With Java Using Hibernate Jsps And Servlets Tim Downey
Spring, web service, web server, eclipse by a introduction sandesh sharma
Learn Spring Boot With Bisky - Intoduction
unit_1_spring_1.pptxfgfgggjffgggddddgggg
Spring boot
Spring boot jpa
Toms introtospring mvc
Ad

Recently uploaded (20)

PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
bas. eng. economics group 4 presentation 1.pptx
DOCX
573137875-Attendance-Management-System-original
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPT
Mechanical Engineering MATERIALS Selection
PDF
PPT on Performance Review to get promotions
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPTX
additive manufacturing of ss316l using mig welding
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
Construction Project Organization Group 2.pptx
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
OOP with Java - Java Introduction (Basics)
PDF
Structs to JSON How Go Powers REST APIs.pdf
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Lesson 3_Tessellation.pptx finite Mathematics
Embodied AI: Ushering in the Next Era of Intelligent Systems
Model Code of Practice - Construction Work - 21102022 .pdf
bas. eng. economics group 4 presentation 1.pptx
573137875-Attendance-Management-System-original
Internet of Things (IOT) - A guide to understanding
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Mechanical Engineering MATERIALS Selection
PPT on Performance Review to get promotions
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
additive manufacturing of ss316l using mig welding
Operating System & Kernel Study Guide-1 - converted.pdf
Construction Project Organization Group 2.pptx
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
OOP with Java - Java Introduction (Basics)
Structs to JSON How Go Powers REST APIs.pdf
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Lesson 3_Tessellation.pptx finite Mathematics
Ad

SpringBootCompleteBootcamp.pptx

  • 1. A Complete Spring Boot Course for beginners https://spring.io/ PAGE 1 Sufyan Sattar Software Engineer sufyan.sattar@tkxel.com
  • 2. Course Outline Introduction to Spring Boot and Background Web Services (SOAP and Restful) JPA/Hibernate and Custom SQL Queries H2 Database (In memory database) PostgreSQL and MySQL PAGE 2
  • 3. Introduction to Spring Boot  It is an application framework used for developing Enterprise Applications.  It makes programming Java quicker, easier, and safer for everybody.  It provides a flexible way to configure Java Beans, XML configurations, and Database Transactions. It provides powerful batch processing and manages REST endpoints. In Spring Boot, everything is auto-configured; no manual configurations are needed.  Termimology:  Spring Initializer (https://start.spring.io/)  Starter Projects  Auto Configuration  Actuators  Developer Tools (DevTools) PAGE 3
  • 4.  Setting up Spring Web projects was not easy  Define Maven Dependencies and manage versions for the framework (spring web_mvc, Jackson)  Define web.xml (src/main/webapp/WEB_INF/web.xml)  Define front controller for spring framework (Dispatcher Servlets)  Define a Spring content.xml (src/main/webapp/WEB_INF/todo_servlet.xml)  Define all beans  Define component scan  Install Tomcat or another web server like Glassfish.  Deploy and run the application in Tomcat PAGE 4 World Before Spring Boot
  • 5.  Spring Boot Starter Projects  It helps you get the project up and running quickly.  Web Applications (Spring boot starter web)  Rest API (Spring boot starter web)  Talk to database using JPA (spring boot starter data JPA)  Talk to database using JDBC (spring boot starter JDBC)  Spring Boot Auto Configurations  It provides a basic configuration to run your app using the framework defined in maven dependencies.  We can override our own configuration  Auto configuration is decided based on which framework is in the classpath  E.g. (spring boot starter web)  Dispatch Servlet  Embeded Servlets Container – Tomcat is the default server  Default Error Page  Bean to JSON conversion PAGE 5 How does Spring Boot do its magic?
  • 6.  Monitor and manage your application in your production.  Provides a number of endpoints:-  Beans – Complete the list of Spring beans in your app  Health – Application health information  Metrics – Application metrics  Mapping – Details around Request Mapping PAGE 6 Spring Boot - Actuators  Increase developer productivity  Save timing  Only local machine or debug variant Spring Boot - Dev Tools
  • 7. PAGE 7 Spring Framework vs Spring Boot  Spring Framework  The Spring framework provides comprehensive infrastructure support for developing Java applications.  It's packed with some nice features like Dependency Injection, and out-of-the-box modules like:  Spring JDBC  Spring MVC  Spring Security  Spring ORM  Spring Test  Spring Boot  Spring Boot is basically an extension of the Spring framework, which eliminates the boilerplate configurations required for setting up a Spring application.  Here are just a few of the features in Spring Boot:  Opinionated ‘starter' dependencies to simplify the build and application configuration  Embeded Server to avoid complexity in application deployment  Metrics, Health checks, and external configuration  Automatic config for Spring functionality
  • 8. Web Services  Design for machine-to-machine or application-to-application interaction.  Should be interoperable – Not platform dependent  Should allow communication over a network Web Service Definition Request/Response Format Request Structure Response Structure Endpoint (XML/JSON) Note  Dispatcher Servlets handle the request/response  Spring boot auto configuration handle/configure dispatcher servlets  Jackson converts the Java Bean to JSON and vice versa PAGE 8
  • 9. PAGE 9 Web Service Task  Social Media Application Usecase : User ---> Post  Retrieve all users GetRequest /users  Create a user PostRequest /users  Retrieve a specific user GetRequest /users{id}  Delete a user DeleteRequest /users{id} 1. Create a Controller. @RestController 2. Create methods for API and annotate with 1. @GetMapping 2. @PostMapping 3. @PutMapping 4. @DeleteMapping
  • 10. PAGE 10 Web Service Topics  HATEOAS (Hyper Media as the Engine of Application State)  HATEOAS will add value to you API when used by client. The links provided by HATEOAS gives you the possibilities to different parts (resources) of your API without needing to hardcore those links in your apps client code.  We use WebMvcLinkBuilder and link any method/API of our controller in the response.  E.g. I request http://localhost:8080/jpa/users/1/posts/1  Exception Handling  Give a proper response to the user when an exception occurs with the status code.  We can use ResponseEntityExceptionHandler to provide centralized exception handling across all @RequestMapping methods through @ExceptionHandler methods.
  • 11. PAGE 11 Web Service Topics  Validation for Rest API  We can add @Valid to validate our request  @Sized(min=2) @Email @Past  We just place annotation to the variable  Internationalization for Restful Services  We create different resources file w.r.t languages e.g: messages_fr.properties.  In messages.properties file we write string in different language.  Content Negotiation  We can implement XML support in out Restful API.  Client will sent Accept Header with application/xml value.
  • 12. PAGE 12 Web Service Topics  Swagger UI  baseurl/swagger-ui/index.html  OpenAPI create all the documentation of your Restful API in our application  Swagger UI gets that data and represents in GUI  OpenAPI definition: baseurl/v3/api-docs  Monitory API with Spring Boot Actuators  base_url/actuator  We can manual configuration by adding some lines  in application.properties file  HAL Explorer  Visualizing all API  Its show all links in visual format  You can also see HATEOAS links in visual formats  base_url/explorer/
  • 13. PAGE 13 Web Service Topics  Filtering  Static Filtering  Just place @JsonIgnore above the variable  You can also place above class name and add multiple parameter name  Dynamic Filtering  When you hide/show data in response w.r.t to response  We use SimpleBeanPropertyFilter, FilterProvider, and MappingJacksonValue  Versioning  Url versioning  Params versioning  Customer Header versioning  Produces versioning (mine-type versioning)
  • 14. PAGE 14 Web Service Topics  Security  After Enable security web services will return 401 unauthorized status.  Request all API with basic Auth (username=user and password=from console)  Add configuration for static password not change when server restart  security.username=username , security.password=password
  • 15. JPA/Hibernate and Custom Query  JPA is the specification and define the way to manage relational database using Java Objects  Hibernate is the implementation of Java Persistence API. It is the ORM tool to persist Java objects into relational database  Implementation/Annotations:  @Entity  @Table(name=“employee”)  @Column(name=“first_name”)  EmptyConstructor  All Argument Constructor  Setter/Getter  @OneToMany(mappedBy=“user”, cascade=Cascade.ALL)  @ManyToOne()  @JoinColoum  @Id  @GeneratedValue(strategy= GenerationType.IDENTITY)  @Repository (interface UserRepo implement JpaRepository<User, Integer>) PAGE 15
  • 16. JPA/Hibernate and Custom Query  JPA Repository:  Its interface having default storage methods like save(), findAll(); findBtId(), DeleteById() etc.  Its provides us the ORM for storing data into relational database.  We can also write custom query for fetching data from database.  JPA provided us @Query annotation.  Create interface and implement JpaRepository<Object, Integer>)  Inside repo you can write function and custom query  Custom Query: @Query(“SELECT * FROM posts WHERE user_id=:user_id AND id=:post_id”, nativeQuery=true)  Post getPostDetailsOfSpecifcUser( @Param(“user_id”) Integer user_id, @Param(“post_id”) Integer post_id ); PAGE 16
  • 17. H2 Database  H2 is inmemory database provided by Spring Boot.  H2 database name randomly generated each time you restart the run or run application.  We can make it constant by manual configuration:  Spring.datasource.url=“jdbc:h2:mem:mytestdb”  Sometime we need more fined grained control over tha database alterations and that why we create data.sql and schema.sql  data.sql:- We rely on default schema created by Hibernate/JPA. We add data into data.sql by writing SQL queries into data.sql file  schema.sql:- We don`t rely on default schema creation mechanism. We create own schema i.e table and coloums etc. Spring will pickup this file and create schema  Note: Script base initialization i.e through data.sql and schema.sql, and hibernate default initialization together can cause some issues.  We disable hibernate automatic schema creations with manual configuration.  spring.jpa.hibernate.ddl-auto=none  If you want to use both hibernate automatic creation schema and script based schema creation and data population. You can use  spring.jpa.defer-datasource-initialization=true  Script base initialization is perform by default only for embeded databases. PAGE 17
  • 18. PostgreSQL and MySQL with Spring Boot  Configuration with PostgreSQL  spring.datasource.url=jdbc:postgresql://localhost:5432/employees  spring.datasource.username=postgres  spring.datasource.password=admin  spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect  Configuration with MySQL  spring.datasource.url=jdbc:mysql://localhost:3306/employees  spring.datasource.username=root  spring.datasource.password=admin  spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect  spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver PAGE 18