SlideShare a Scribd company logo
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
Ad

More Related Content

Similar to SpringBootCompleteBootcamp.pptx (20)

JEE5 New Features
JEE5 New FeaturesJEE5 New Features
JEE5 New Features
Haitham Raik
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
nomykk
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
Red Hat
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
Lou Sacco
 
Dh2 Apps Training Part2
Dh2   Apps Training Part2Dh2   Apps Training Part2
Dh2 Apps Training Part2
jamram82
 
Jdbc
JdbcJdbc
Jdbc
BindhuBhargaviTalasi
 
Module 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to beginModule 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to begin
Deepakprasad838637
 
JavaEE6 my way
JavaEE6 my wayJavaEE6 my way
JavaEE6 my way
Nicola Pedot
 
Spring and DWR
Spring and DWRSpring and DWR
Spring and DWR
wiradikusuma
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts framework
s4al_com
 
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Kazuyuki Kawamura
 
Code igniter - A brief introduction
Code igniter - A brief introductionCode igniter - A brief introduction
Code igniter - A brief introduction
Commit University
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
Alexander Zamkovyi
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
Rohit Kelapure
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
tola99
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
Hendrik Ebbers
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
John Lewis
 
A presentationon SPRING-BOOT and CRUD operation
A presentationon SPRING-BOOT and CRUD operationA presentationon SPRING-BOOT and CRUD operation
A presentationon SPRING-BOOT and CRUD operation
AbhijiteDebBarman
 
Toms introtospring mvc
Toms introtospring mvcToms introtospring mvc
Toms introtospring mvc
Guo Albert
 
Aqua presentation
Aqua presentationAqua presentation
Aqua presentation
Shivnarayan Varma
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
nomykk
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
Red Hat
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
Lou Sacco
 
Dh2 Apps Training Part2
Dh2   Apps Training Part2Dh2   Apps Training Part2
Dh2 Apps Training Part2
jamram82
 
Module 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to beginModule 6 _ Spring Boot for java application to begin
Module 6 _ Spring Boot for java application to begin
Deepakprasad838637
 
Introduction to ejb and struts framework
Introduction to ejb and struts frameworkIntroduction to ejb and struts framework
Introduction to ejb and struts framework
s4al_com
 
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Spring as a Cloud Platform (Developer Summit 2011 17-C-5)
Kazuyuki Kawamura
 
Code igniter - A brief introduction
Code igniter - A brief introductionCode igniter - A brief introduction
Code igniter - A brief introduction
Commit University
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
Alexander Zamkovyi
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
Rohit Kelapure
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
tola99
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
Hendrik Ebbers
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
John Lewis
 
A presentationon SPRING-BOOT and CRUD operation
A presentationon SPRING-BOOT and CRUD operationA presentationon SPRING-BOOT and CRUD operation
A presentationon SPRING-BOOT and CRUD operation
AbhijiteDebBarman
 
Toms introtospring mvc
Toms introtospring mvcToms introtospring mvc
Toms introtospring mvc
Guo Albert
 

Recently uploaded (20)

Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
DSP and MV the Color image processing.ppt
DSP and MV the  Color image processing.pptDSP and MV the  Color image processing.ppt
DSP and MV the Color image processing.ppt
HafizAhamed8
 
introduction to machine learining for beginers
introduction to machine learining for beginersintroduction to machine learining for beginers
introduction to machine learining for beginers
JoydebSheet
 
Metal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistryMetal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistry
mee23nu
 
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptxExplainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
MahaveerVPandit
 
railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
charlesdick1345
 
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Journal of Soft Computing in Civil Engineering
 
Oil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdfOil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdf
M7md3li2
 
Compiler Design Unit1 PPT Phases of Compiler.pptx
Compiler Design Unit1 PPT Phases of Compiler.pptxCompiler Design Unit1 PPT Phases of Compiler.pptx
Compiler Design Unit1 PPT Phases of Compiler.pptx
RushaliDeshmukh2
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Raish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdfRaish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdf
RaishKhanji
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
inmishra17121973
 
fluke dealers in bangalore..............
fluke dealers in bangalore..............fluke dealers in bangalore..............
fluke dealers in bangalore..............
Haresh Vaswani
 
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdfRICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
MohamedAbdelkader115
 
π0.5: a Vision-Language-Action Model with Open-World Generalization
π0.5: a Vision-Language-Action Model with Open-World Generalizationπ0.5: a Vision-Language-Action Model with Open-World Generalization
π0.5: a Vision-Language-Action Model with Open-World Generalization
NABLAS株式会社
 
The Gaussian Process Modeling Module in UQLab
The Gaussian Process Modeling Module in UQLabThe Gaussian Process Modeling Module in UQLab
The Gaussian Process Modeling Module in UQLab
Journal of Soft Computing in Civil Engineering
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
DSP and MV the Color image processing.ppt
DSP and MV the  Color image processing.pptDSP and MV the  Color image processing.ppt
DSP and MV the Color image processing.ppt
HafizAhamed8
 
introduction to machine learining for beginers
introduction to machine learining for beginersintroduction to machine learining for beginers
introduction to machine learining for beginers
JoydebSheet
 
Metal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistryMetal alkyne complexes.pptx in chemistry
Metal alkyne complexes.pptx in chemistry
mee23nu
 
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptxExplainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
MahaveerVPandit
 
railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
DATA-DRIVEN SHOULDER INVERSE KINEMATICS YoungBeom Kim1 , Byung-Ha Park1 , Kwa...
charlesdick1345
 
Oil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdfOil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdf
M7md3li2
 
Compiler Design Unit1 PPT Phases of Compiler.pptx
Compiler Design Unit1 PPT Phases of Compiler.pptxCompiler Design Unit1 PPT Phases of Compiler.pptx
Compiler Design Unit1 PPT Phases of Compiler.pptx
RushaliDeshmukh2
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Raish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdfRaish Khanji GTU 8th sem Internship Report.pdf
Raish Khanji GTU 8th sem Internship Report.pdf
RaishKhanji
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
211421893-M-Tech-CIVIL-Structural-Engineering-pdf.pdf
inmishra17121973
 
fluke dealers in bangalore..............
fluke dealers in bangalore..............fluke dealers in bangalore..............
fluke dealers in bangalore..............
Haresh Vaswani
 
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdfRICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
MohamedAbdelkader115
 
π0.5: a Vision-Language-Action Model with Open-World Generalization
π0.5: a Vision-Language-Action Model with Open-World Generalizationπ0.5: a Vision-Language-Action Model with Open-World Generalization
π0.5: a Vision-Language-Action Model with Open-World Generalization
NABLAS株式会社
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
Ad

SpringBootCompleteBootcamp.pptx

  • 1. A Complete Spring Boot Course for beginners https://spring.io/ PAGE 1 Sufyan Sattar Software Engineer [email protected]
  • 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