Spring Boot Introduction: Spring MVC, Spring Data
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
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
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
18
Beans
Object that is instantiated, assembled, and otherwise managed
by a Spring IoC container
Dog.java
public class Dog implements Animal {
public Dog() {}
20
Get Bean from Application Context
MainApplication.java
@SpringBootApplication
public class MainApplication {
21
Bean Lifecycle
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 Dog() {
System.out.println("Instantiation");
}
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 {
30
Actions – Get Requests
CatController.java
@Controller
public class CatController {
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 {
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 {
35
Spring MVC Demo
36
Spring Data
37
Overall Architecture
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;
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