SlideShare a Scribd company logo
Spring
An introduction
Roberto Casadei
Concurrent and Distributed Programming course
Department of Computer Science and Engineering (DISI)
Alma Mater Studiorum – Università of Bologna
June 16, 2018
PCD1718 Introduction Spring Boot 1/12
Outline
1 Introduction
2 Spring Microservices with Spring Boot
PCD1718 Introduction Spring Boot 2/12
Spring » intro
What
Spring: OSS framework that makes it easy to create JVM-based enterprise apps
At its heart is an IoC container (managing beans and their dependencies)
Also, notably: AOP support
Term “Spring” also refers to the family of projects built on top of Spring Framework
Spring Boot: opinionated, CoC-approach for production-ready Spring apps
Spring Cloud: provides tools/patterns for building/deploying µservices
Spring AMQP: supports AMQP-based messaging solutions... many others...
Some History
2003 – Spring sprout as a response to the complexity of the early J2EE specs.
2006 – Spring 2.0 provided XML namespaces and AspectJ support
2007 – Spring 2.5 embraced annotation-driven configuration
Over time, the approach Java enterprise application development has evolved.
Java EE application servers – for full-stack monolithic web-apps
Spring Boot/Cloud apps – for devops/cloud-friendly apps, with embedded server
Spring WebFlux, released with Spring 5 in 2017, supports reactive-stack web apps
PCD1718 Introduction Spring Boot 3/12
Spring » intro
What
Spring: OSS framework that makes it easy to create JVM-based enterprise apps
At its heart is an IoC container (managing beans and their dependencies)
Also, notably: AOP support
Term “Spring” also refers to the family of projects built on top of Spring Framework
Spring Boot: opinionated, CoC-approach for production-ready Spring apps
Spring Cloud: provides tools/patterns for building/deploying µservices
Spring AMQP: supports AMQP-based messaging solutions... many others...
Some History
2003 – Spring sprout as a response to the complexity of the early J2EE specs.
2006 – Spring 2.0 provided XML namespaces and AspectJ support
2007 – Spring 2.5 embraced annotation-driven configuration
Over time, the approach Java enterprise application development has evolved.
Java EE application servers – for full-stack monolithic web-apps
Spring Boot/Cloud apps – for devops/cloud-friendly apps, with embedded server
Spring WebFlux, released with Spring 5 in 2017, supports reactive-stack web apps
PCD1718 Introduction Spring Boot 3/12
Spring » beans and wiring I
(Spring) Bean: application object managed by the Spring IoC container
Configuration metadata tells the Spring container how instantiate, configure,
and assemble the objects in your application.
a) XML-based metadata
b) Java-based configuration
Java-based container configuration
Factory methods in Configuration classes can be annotated with Bean
Configuration public class AppConfig {
Bean public MyService myService() { return new MyServiceImpl(); }
public static void main(String[] args) {
ApplicationContext ctx =
new AnnotationConfigApplicationContext(AppConfig.class);
MyService myService = ctx.getBean(MyService.class);
myService.doStuff();
} }
PCD1718 Introduction Spring Boot 4/12
Spring » beans and wiring II
Spring-managed components
Stereotypes: Component, Service, Controller, Repository
Spring can automatically detect stereotyped classes and register corresponding
BeanDefinitions with the ApplicationContext, via ComponentScan
Configuration
ComponentScan(basePackages="it.unibo.beans")
public class AppConfig { }
package it.unibo.beans;
Service
public class MyService {
Autowired private ServiceA sa; // field injection
public MyService(ServiceB sb){ ... } // constructor injection
Autowired
public void setServiceC(ServiceC sc){ .. } // setter injection
}
PCD1718 Introduction Spring Boot 5/12
Outline
1 Introduction
2 Spring Microservices with Spring Boot
PCD1718 Introduction Spring Boot 6/12
Spring Boot
Spring Boot makes it easy to create stand-alone, production-grade Spring-based
Applications that you can just run
It takes an opinionated view of the Spring platform and 3rd-party libraries
Reasonable convention-over-configuration for getting started quickly
It provides a light version of Spring targeted at Java-based RESTful µservices,
without the need for an external application container
It abstracts away the common REST microservice tasks (routing to business
logic, parsing HTTP params from the URL, mapping JSON to/from POJOs), and
lets the developer focus on the service business logic.
Supported embedded containers: Tomcat 8.5, Jetty 9.4, Undertow 1.4
PCD1718 Introduction Spring Boot 7/12
Build configuration
Build plugins
spring-boot-maven-plugin for Maven
spring-boot-gradle-plugin1
for Gradle
Dependencies (cf., group ID org.springframework.boot)
Starters are a set of convenient dependency descriptors to get a project up and
running quickly.
spring-boot-starter-web: starter for web, RESTful / MVC apps (Tomcat as
default container)
spring-boot-starter-actuator: gives production-ready features for app
monitoring/management
Run
Maven tasks: spring-boot:run, package
Gradle tasks: bootRun, bootJar
1https:
//docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/
PCD1718 Introduction Spring Boot 8/12
Hello Spring Boot
SpringBootApplication // tells Boot this is the bootstrap class
public class MyApp {
public static void main(String[] args){
SpringApplication.run(MyApp.class, args);
}
}
SpringBootApplication also implies
– EnableAutoConfiguration: tells Spring Boot to "guess" config by classpath
– ComponentScan: tells Spring to look for components
RestController RequestMapping(value="/app")
public class MyController {
RequestMapping(value="/hello/{name}", method = RequestMethod.GET)
public String hello( PathVariable("name") String name){
return "Hello, " + name;
}
}
Endpoint: http://localhost:8080/app/hello/Boot
Actuator also exposes http://localhost:8080/actuator/health
PCD1718 Introduction Spring Boot 9/12
A path for learning Spring Boot I
Spring Guides: https://spring.io/guides
Do-It-Yourself
Building an Application with Spring Boot
https://spring.io/guides/gs/spring-boot/
Use RestController and RequestMapping to add endpoints.
Create a SpringBootApplication class with main method.
Consuming a RESTful Web Service
https://spring.io/guides/gs/consuming-rest/
You use RestTemplate to make calls to RESTful services
You can use RestTemplateBuilder to build RestTemplate Beans as needed.
Building a Reactive RESTful Web Service (with Spring WebFlux)
https://spring.io/guides/gs/reactive-rest-service/
(Optional) Creating Asynchronous Methods
https://spring.io/guides/gs/async-method/
Declare Async methods (so they’ll run on a separate thread) that return
CompletableFuture<T>.
Annotate your app with EnableAsync and define an Executor Bean
PCD1718 Introduction Spring Boot 10/12
A path for learning Spring Boot II
(Optional) Messaging with RabbitMQ
https://spring.io/guides/gs/messaging-rabbitmq/
(Optional) Messaging with Redis
https://spring.io/guides/gs/messaging-redis/
Start redis: redis-server (default on port 6379)
You need to configure (i) a connection factory to connect to the Redis server; (ii) a
message listener container for registering receivers; and (iii) a Redis template to
send messages.
If the listener is a POJO, it needs to be wrapped in a MessageListenerAdapter.
(Optional) Accessing Data Reactively with Redis
https://spring.io/guides/gs/spring-data-reactive-redis/
Create a configuration class with Spring Beans supporting reactive Redis
operations—cf., ReactiveRedisOperations<K,V>
Inject ReactiveRedisOperations<K,V> to interface with Redis
(Optional) Scheduling Tasks
https://spring.io/guides/gs/scheduling-tasks/
EnableScheduling + Scheduled on a Component’s method.
PCD1718 Introduction Spring Boot 11/12
References
References I
PCD1718 Appendix 12/12

More Related Content

PDF
Spring Framework 5.2: Core Container Revisited
PDF
Spring framework
PPTX
Building web applications with Java & Spring
PPTX
Spring framework-tutorial
PDF
Reactjs Basics
PDF
Spring framework Introduction
PDF
Spring MVC Framework
PDF
Spring boot jpa
Spring Framework 5.2: Core Container Revisited
Spring framework
Building web applications with Java & Spring
Spring framework-tutorial
Reactjs Basics
Spring framework Introduction
Spring MVC Framework
Spring boot jpa

What's hot (20)

PPTX
Spring MVC framework
PDF
Spring Framework Tutorial | VirtualNuggets
PPTX
Java Spring Framework
PDF
Getting Started with Spring Framework
PPTX
Spring framework
PPT
Spring hibernate tutorial
PDF
Spring MVC
PPT
Spring Framework
PDF
26 top angular 8 interview questions to know in 2020 [www.full stack.cafe]
PDF
Hibernate Interview Questions
PDF
Getting Reactive with Spring Framework 5.0’s GA release
PPTX
Java spring ppt
PDF
Java 9 New Features
PPTX
Next stop: Spring 4
PPTX
Ready! Steady! SpringBoot!
PDF
Spring framework 5: New Core and Reactive features
PPTX
Introduction to Ibatis by Rohit
PPTX
The new and smart way to build microservices - Eclipse MicroProfile
PPTX
Multithreading in java
PDF
PUC SE Day 2019 - SpringBoot
Spring MVC framework
Spring Framework Tutorial | VirtualNuggets
Java Spring Framework
Getting Started with Spring Framework
Spring framework
Spring hibernate tutorial
Spring MVC
Spring Framework
26 top angular 8 interview questions to know in 2020 [www.full stack.cafe]
Hibernate Interview Questions
Getting Reactive with Spring Framework 5.0’s GA release
Java spring ppt
Java 9 New Features
Next stop: Spring 4
Ready! Steady! SpringBoot!
Spring framework 5: New Core and Reactive features
Introduction to Ibatis by Rohit
The new and smart way to build microservices - Eclipse MicroProfile
Multithreading in java
PUC SE Day 2019 - SpringBoot
Ad

Similar to Spring Boot: a Quick Introduction (20)

PDF
Spring Boot Whirlwind Tour
ODP
Spring User Guide
ODP
Sprint Portlet MVC Seminar
PPT
javagruppen.dk - e4, the next generation Eclipse platform
PDF
Building a Spring Boot Application - Ask the Audience!
PPTX
Spring MVC 5 & Hibernate 5 Integration
PPTX
Spring Framework
PPTX
Developing Agile Java Applications using Spring tools
ODP
Spring Mvc,Java, Spring
PPTX
Spring Basics
PPTX
Spring Actionscript at Devoxx
PDF
Spring mvc
PPTX
Background Tasks with Worker Service
PPTX
The next step from Microsoft - Vnext (Srdjan Poznic)
DOCX
Spring notes
PPTX
Spring tutorials
PDF
Seven Simple Reasons to Use AppFuse
PDF
Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)
PPTX
Reactive application using meteor
PDF
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
Spring Boot Whirlwind Tour
Spring User Guide
Sprint Portlet MVC Seminar
javagruppen.dk - e4, the next generation Eclipse platform
Building a Spring Boot Application - Ask the Audience!
Spring MVC 5 & Hibernate 5 Integration
Spring Framework
Developing Agile Java Applications using Spring tools
Spring Mvc,Java, Spring
Spring Basics
Spring Actionscript at Devoxx
Spring mvc
Background Tasks with Worker Service
The next step from Microsoft - Vnext (Srdjan Poznic)
Spring notes
Spring tutorials
Seven Simple Reasons to Use AppFuse
Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)
Reactive application using meteor
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
Ad

More from Roberto Casadei (20)

PDF
Integrating Collective Computing and the Social Internet of Things for Smart ...
PDF
Software Engineering Methods for Artificial Collective Intelligence
PDF
Declarative Macro-Programming of Collective Systems with Aggregate Computing:...
PDF
Programming (and Learning) Self-Adaptive & Self-Organising Behaviour with Sca...
PDF
A Presentation of My Research Activity
PDF
Self-Organisation Programming: a Functional Reactive Macro Approach (FRASP) [...
PDF
Programming Distributed Collective Processes for Dynamic Ensembles and Collec...
PDF
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
PDF
Aggregate Computing Research: an Overview
PDF
Introduction to the 1st DISCOLI workshop on distributed collective intelligence
PDF
Digital Twins, Virtual Devices, and Augmentations for Self-Organising Cyber-P...
PDF
FScaFi: A Core Calculus for Collective Adaptive Systems Programming
PDF
6th eCAS workshop on Engineering Collective Adaptive Systems
PDF
Augmented Collective Digital Twins for Self-Organising Cyber-Physical Systems
PDF
Tuple-Based Coordination in Large-Scale Situated Systems
PDF
Pulverisation in Cyber-Physical Systems: Engineering the Self-Organising Logi...
PDF
Collective Adaptive Systems as Coordination Media: The Case of Tuples in Spac...
PDF
Testing: an Introduction and Panorama
PDF
On Context-Orientation in Aggregate Programming
PDF
Engineering Resilient Collaborative Edge-enabled IoT
Integrating Collective Computing and the Social Internet of Things for Smart ...
Software Engineering Methods for Artificial Collective Intelligence
Declarative Macro-Programming of Collective Systems with Aggregate Computing:...
Programming (and Learning) Self-Adaptive & Self-Organising Behaviour with Sca...
A Presentation of My Research Activity
Self-Organisation Programming: a Functional Reactive Macro Approach (FRASP) [...
Programming Distributed Collective Processes for Dynamic Ensembles and Collec...
Towards Automated Engineering for Collective Adaptive Systems: Vision and Res...
Aggregate Computing Research: an Overview
Introduction to the 1st DISCOLI workshop on distributed collective intelligence
Digital Twins, Virtual Devices, and Augmentations for Self-Organising Cyber-P...
FScaFi: A Core Calculus for Collective Adaptive Systems Programming
6th eCAS workshop on Engineering Collective Adaptive Systems
Augmented Collective Digital Twins for Self-Organising Cyber-Physical Systems
Tuple-Based Coordination in Large-Scale Situated Systems
Pulverisation in Cyber-Physical Systems: Engineering the Self-Organising Logi...
Collective Adaptive Systems as Coordination Media: The Case of Tuples in Spac...
Testing: an Introduction and Panorama
On Context-Orientation in Aggregate Programming
Engineering Resilient Collaborative Edge-enabled IoT

Recently uploaded (20)

PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
Construction Project Organization Group 2.pptx
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
Geodesy 1.pptx...............................................
PPTX
web development for engineering and engineering
PPTX
Welding lecture in detail for understanding
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
additive manufacturing of ss316l using mig welding
PDF
PPT on Performance Review to get promotions
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Sustainable Sites - Green Building Construction
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
bas. eng. economics group 4 presentation 1.pptx
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Construction Project Organization Group 2.pptx
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Model Code of Practice - Construction Work - 21102022 .pdf
Geodesy 1.pptx...............................................
web development for engineering and engineering
Welding lecture in detail for understanding
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
CH1 Production IntroductoryConcepts.pptx
additive manufacturing of ss316l using mig welding
PPT on Performance Review to get promotions
UNIT 4 Total Quality Management .pptx
Sustainable Sites - Green Building Construction
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd

Spring Boot: a Quick Introduction

  • 1. Spring An introduction Roberto Casadei Concurrent and Distributed Programming course Department of Computer Science and Engineering (DISI) Alma Mater Studiorum – Università of Bologna June 16, 2018 PCD1718 Introduction Spring Boot 1/12
  • 2. Outline 1 Introduction 2 Spring Microservices with Spring Boot PCD1718 Introduction Spring Boot 2/12
  • 3. Spring » intro What Spring: OSS framework that makes it easy to create JVM-based enterprise apps At its heart is an IoC container (managing beans and their dependencies) Also, notably: AOP support Term “Spring” also refers to the family of projects built on top of Spring Framework Spring Boot: opinionated, CoC-approach for production-ready Spring apps Spring Cloud: provides tools/patterns for building/deploying µservices Spring AMQP: supports AMQP-based messaging solutions... many others... Some History 2003 – Spring sprout as a response to the complexity of the early J2EE specs. 2006 – Spring 2.0 provided XML namespaces and AspectJ support 2007 – Spring 2.5 embraced annotation-driven configuration Over time, the approach Java enterprise application development has evolved. Java EE application servers – for full-stack monolithic web-apps Spring Boot/Cloud apps – for devops/cloud-friendly apps, with embedded server Spring WebFlux, released with Spring 5 in 2017, supports reactive-stack web apps PCD1718 Introduction Spring Boot 3/12
  • 4. Spring » intro What Spring: OSS framework that makes it easy to create JVM-based enterprise apps At its heart is an IoC container (managing beans and their dependencies) Also, notably: AOP support Term “Spring” also refers to the family of projects built on top of Spring Framework Spring Boot: opinionated, CoC-approach for production-ready Spring apps Spring Cloud: provides tools/patterns for building/deploying µservices Spring AMQP: supports AMQP-based messaging solutions... many others... Some History 2003 – Spring sprout as a response to the complexity of the early J2EE specs. 2006 – Spring 2.0 provided XML namespaces and AspectJ support 2007 – Spring 2.5 embraced annotation-driven configuration Over time, the approach Java enterprise application development has evolved. Java EE application servers – for full-stack monolithic web-apps Spring Boot/Cloud apps – for devops/cloud-friendly apps, with embedded server Spring WebFlux, released with Spring 5 in 2017, supports reactive-stack web apps PCD1718 Introduction Spring Boot 3/12
  • 5. Spring » beans and wiring I (Spring) Bean: application object managed by the Spring IoC container Configuration metadata tells the Spring container how instantiate, configure, and assemble the objects in your application. a) XML-based metadata b) Java-based configuration Java-based container configuration Factory methods in Configuration classes can be annotated with Bean Configuration public class AppConfig { Bean public MyService myService() { return new MyServiceImpl(); } public static void main(String[] args) { ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); MyService myService = ctx.getBean(MyService.class); myService.doStuff(); } } PCD1718 Introduction Spring Boot 4/12
  • 6. Spring » beans and wiring II Spring-managed components Stereotypes: Component, Service, Controller, Repository Spring can automatically detect stereotyped classes and register corresponding BeanDefinitions with the ApplicationContext, via ComponentScan Configuration ComponentScan(basePackages="it.unibo.beans") public class AppConfig { } package it.unibo.beans; Service public class MyService { Autowired private ServiceA sa; // field injection public MyService(ServiceB sb){ ... } // constructor injection Autowired public void setServiceC(ServiceC sc){ .. } // setter injection } PCD1718 Introduction Spring Boot 5/12
  • 7. Outline 1 Introduction 2 Spring Microservices with Spring Boot PCD1718 Introduction Spring Boot 6/12
  • 8. Spring Boot Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can just run It takes an opinionated view of the Spring platform and 3rd-party libraries Reasonable convention-over-configuration for getting started quickly It provides a light version of Spring targeted at Java-based RESTful µservices, without the need for an external application container It abstracts away the common REST microservice tasks (routing to business logic, parsing HTTP params from the URL, mapping JSON to/from POJOs), and lets the developer focus on the service business logic. Supported embedded containers: Tomcat 8.5, Jetty 9.4, Undertow 1.4 PCD1718 Introduction Spring Boot 7/12
  • 9. Build configuration Build plugins spring-boot-maven-plugin for Maven spring-boot-gradle-plugin1 for Gradle Dependencies (cf., group ID org.springframework.boot) Starters are a set of convenient dependency descriptors to get a project up and running quickly. spring-boot-starter-web: starter for web, RESTful / MVC apps (Tomcat as default container) spring-boot-starter-actuator: gives production-ready features for app monitoring/management Run Maven tasks: spring-boot:run, package Gradle tasks: bootRun, bootJar 1https: //docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/ PCD1718 Introduction Spring Boot 8/12
  • 10. Hello Spring Boot SpringBootApplication // tells Boot this is the bootstrap class public class MyApp { public static void main(String[] args){ SpringApplication.run(MyApp.class, args); } } SpringBootApplication also implies – EnableAutoConfiguration: tells Spring Boot to "guess" config by classpath – ComponentScan: tells Spring to look for components RestController RequestMapping(value="/app") public class MyController { RequestMapping(value="/hello/{name}", method = RequestMethod.GET) public String hello( PathVariable("name") String name){ return "Hello, " + name; } } Endpoint: http://localhost:8080/app/hello/Boot Actuator also exposes http://localhost:8080/actuator/health PCD1718 Introduction Spring Boot 9/12
  • 11. A path for learning Spring Boot I Spring Guides: https://spring.io/guides Do-It-Yourself Building an Application with Spring Boot https://spring.io/guides/gs/spring-boot/ Use RestController and RequestMapping to add endpoints. Create a SpringBootApplication class with main method. Consuming a RESTful Web Service https://spring.io/guides/gs/consuming-rest/ You use RestTemplate to make calls to RESTful services You can use RestTemplateBuilder to build RestTemplate Beans as needed. Building a Reactive RESTful Web Service (with Spring WebFlux) https://spring.io/guides/gs/reactive-rest-service/ (Optional) Creating Asynchronous Methods https://spring.io/guides/gs/async-method/ Declare Async methods (so they’ll run on a separate thread) that return CompletableFuture<T>. Annotate your app with EnableAsync and define an Executor Bean PCD1718 Introduction Spring Boot 10/12
  • 12. A path for learning Spring Boot II (Optional) Messaging with RabbitMQ https://spring.io/guides/gs/messaging-rabbitmq/ (Optional) Messaging with Redis https://spring.io/guides/gs/messaging-redis/ Start redis: redis-server (default on port 6379) You need to configure (i) a connection factory to connect to the Redis server; (ii) a message listener container for registering receivers; and (iii) a Redis template to send messages. If the listener is a POJO, it needs to be wrapped in a MessageListenerAdapter. (Optional) Accessing Data Reactively with Redis https://spring.io/guides/gs/spring-data-reactive-redis/ Create a configuration class with Spring Beans supporting reactive Redis operations—cf., ReactiveRedisOperations<K,V> Inject ReactiveRedisOperations<K,V> to interface with Redis (Optional) Scheduling Tasks https://spring.io/guides/gs/scheduling-tasks/ EnableScheduling + Scheduled on a Component’s method. PCD1718 Introduction Spring Boot 11/12