0% found this document useful (0 votes)
265 views47 pages

Spring Boot Introduction: Spring MVC, Spring Data

This document provides an introduction to Spring Boot and Spring MVC. It discusses the main components of Spring Boot including starters, autoconfiguration, CLI and actuator. It also provides an overview of Spring MVC including the model-view-controller pattern and control flow.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
265 views47 pages

Spring Boot Introduction: Spring MVC, Spring Data

This document provides an introduction to Spring Boot and Spring MVC. It discusses the main components of Spring Boot including starters, autoconfiguration, CLI and actuator. It also provides an overview of Spring MVC including the model-view-controller pattern and control flow.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 47

Spring Boot Introduction

Spring MVC, Spring Data

S pr in
I nt ro g B o o t
ducti
on

SoftUni Team
Technical Trainers
Software University
http://softuni.bg
Table of Contents
1. Spring Boot Components
2. Spring MVC
3. Spring Data

2
Have a Question?

sli.do
#JavaWeb
3
What is Spring Boot?

4
Spring Boot
 Opinionated view of building production-ready Spring
applications

Tomcat

pom.xml
Spring Boot

Auto configuration
5
Spring Boot

Spring Boot

6
Creating Spring Boot Project
 Just go to https://start.spring.io/

7
Spring Dev Tools
 Additional set of tools that can make the application
development faster and more enjoyable

pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>

8
Spring Dev Tools Setup

9
Spring Resources

HTML, CSS, JS

Thymeleaf

App propertues

10
Spring Boot Main Components
 Four main components:
 Spring Boot Starters - combine a group of common or related
dependencies into single dependency
 Spring Boot AutoConfigurator - reduce the Spring Configuration

 Spring Boot CLI - run and test Spring Boot


applications from command prompt
 Spring Boot Actuator – provides EndPoints and
Metrics

11
Spring Boot Starters (1)

pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>

12
Spring Boot Starters (2)
spring-boot-starter-web

spring-boot-starter-tomcat spring-web spring-boot-starter spring-web-mvc

spring-boot
tomcat-embed-logging-juli
spring-boot-autoconfigure
tomcat-embed-core
spring-boot-starter-logging
13
Spring Boot AutoConfigurator
pom.xml
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
)}
)
public @interface SpringBootApplication 14
Spring Boot CLI
 Command Line Interface - Spring Boot software to run and test
Spring Boot applications

15
Spring Boot Actuator
 Expose different types of information about the running
application
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

16
Inversion of Control
 Spring provides Inversion of Control and Dependency Injection
UserServiceImpl.java UserServiceImpl.java
//Tradiotional Way //Dependency Injection
public class UserServiceImpl @Service
implements UserService { public class UserServiceImpl
implements UserService {
private UserRepository
userRepository = new @Autowired
UserRepository(); private UserRepository
} userRepository;
}

17
Spring IoC

Explicit Beans
Meta Data: Automatic Beans:
1. @Bean
1. XML Config 1. @Component
2. Java Config 2. @Service
3. Annotation Config 3. @Repository
IoC

Fully Configured System

18
Beans
 Object that is instantiated, assembled, and otherwise managed
by a Spring IoC container
Dog.java
public class Dog implements Animal {

private String name;

public Dog() {}

//GETTERS AND SETTERS


}
19
Bean Declaration
Dog.java
@SpringBootApplication
public class MainApplication {

@Bean Bean Declaration


public Animal getDog(){
return new Dog();
}
}

20
Get Bean from Application Context
MainApplication.java
@SpringBootApplication
public class MainApplication {

public static void main(String[] args) {


ApplicationContext context =
SpringApplication.run(MainApplication.class, args);
Animal dog = context.getBean(Dog.class);
System.out.println("DOG: " +
dog.getClass().getSimpleName());
}
}

21
Bean Lifecycle

Instantiation Set Properties Set Name

Set Application
Initialization Pre Initialization
Context
When Container
is Shutdown
Post Initialization Bean is ready Bean is destroyed

22
Bean Lifecycle Demo (1)
MainApplication.java
@SpringBootApplication
public class MainApplication {

public static void main(String[] args) {


ApplicationContext context =
SpringApplication.run(MainApplication.class, args);
((AbstractApplicationContext)context).close();
}
@Bean(destroyMethod = "destroy", initMethod = "init")
public Animal getDog(){
return new Dog();
}
}
23
Bean Lifecycle Demo (2)
MainApplication.java
public class Dog implements Animal {

public Dog() {
System.out.println("Instantiation");
}

public void init(){


System.out.println("Initializing..");
}

public void destroy(){


System.out.println("Destroying..");
}
} 24
Bean Scope
 The default one is Singleton. It is easy to change to Prototype
Mostly used Mostly used
as State-less as State-full
Singleton Prototype

Request A Request A Dog 1


Request B Dog Request B Dog 2

Request C Request C Dog 3

25
Bean Scope Demo

26
What is Spring MVC?

27
What is Spring MVC?
 Model-view-controller (MVC) framework is designed around a
DispatcherServlet that dispatches requests to handlers
Find
Handler Controller Service
Controller
Mapping
Request
Dispatcher Execute Handler View Name
Servlet Action Adapter Repository

View Result
Resolve Resolver Model
DB
Response View
Result
View Model Model
Business Logic
28
MVC – Control Flow
Web Client
Request

Controller Response
(html, json, xml)
Update
Model
User Action
Update
Notify
View

Model View

29
Controllers
Controller DogController.java
@Controller
public class DogController {

@GetMapping("/dog") Request Mapping


@ResponseBody Action
public String getDogHomePage(){
Print Text
return "I am a dog page";
}
} Text

30
Actions – Get Requests
CatController.java
@Controller
public class CatController {

@GetMapping("/cat") Request Mapping


public String getHomeCatPage(){
Action
return "cat-page.html";
}
} View

31
Actions – Post Requests (1)
CatController.java
@Controller
@RequestMapping("/cat") Starting route
public class CatController {

@GetMapping("")
public String getHomeCatPage(){
return "new-cat.html";
}
}

32
Actions – Post Requests (1)
CatController.java
@Controller
@RequestMapping("/cat")
public class CatController {

@PostMapping("") Request param


public String addCat(@RequestParam String catName,
@RequestParam int catAge){
System.out.println(String.format("Cat Name: %s, Cat
Age: %d", catName, catAge));
return "redirect:/cat"; Redirect
}
}

33
Models and Views
DogController.java
@Controller
public class DogController {
Model and View
@GetMapping("/dog")
public ModelAndView getDogHomePage(ModelAndView modelAndView){
modelAndView.setViewName("dog-page.html");
return modelAndView;
}
}

34
Path Variables
CatController.java
@Controller
@RequestMapping("/cat")
public class CatController {

@GetMapping("/edit/{catId}") Path Variable


@ResponseBody
public String editCat(@PathVariable long catId){
return String.valueOf(catId);
}
}

35
Spring MVC Demo

36
Spring Data

37
Overall Architecture

Repository Service Controller

Database View

Models/
Entities
DTO

Back-end
38
Application Properties

application.properties
#Data Source Properties
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/cat_store?
useSSL=false&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=1234
#JPA Properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQ
L5InnoDBDialect
spring.jpa.properties.hibernate.format_sql=TRUE
spring.jpa.hibernate.ddl-auto=update

39
Entities
 Entity is a lightweight persistence domain object
Cat.java
@Entity
@Table(name = "cats")
public class Cat {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private String name;


//GETTERS AND SETTERS
}
40
Repositories
 Persistence layer that works with entities

CatRepository.java
@Repository
public interface CatRepository extends CrudRepository<Cat, Long> {
}

41
Services
 Business Layer. All the business logic is here.
CatService.java
@Service
public class CatServiceImpl implements CatService {

@Autowired
private CatRepository catRepository;

@Override
public void buyCat(CatModel catModel) {
//TODO Implement the method
}
}
42
Spring Data Demo

43
Summary
 Spring Boot - Opinionated view of building
production-ready Spring applications
 Spring MVC - MVC framework that has three
main components:
 Controller - controls the application flow
 View - presentation layer
 Model - data component with the main logic
 Spring Data - Responsible for database related
operations
44
Web Development Basics – Course Overview

? ?

stio ns ? ?

Qu e ?
?

?
https://softuni.bg/courses/
License
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International"
license

46
Free Trainings @ Software University
 Software University Foundation – softuni.org
 Software University – High-Quality Education,
Profession and Job for Software Developers
 softuni.bg
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University @ YouTube
 youtube.com/SoftwareUniversity
 Software University Forums – forum.softuni.bg

You might also like