SlideShare uma empresa Scribd logo
1 de 26
Spring Boot
- By Jeevesh Pandey
• What and Why?
• Key features of Spring boot.
• Prototyping using CLI.
• Working with Spring Boot with gradle.
• Packaging Executable Jars / Fat jars
• Managing profiles
• Binding Properties - Configurations
• Using Spring data libraries
• Presentation layer(A glimpse)
• Miscellaneous
Agenda
• Spring-boot provides a quick way to create a Spring
based application from dependency management to
convention over configuration.
• It’s not a replacement for Spring framework but it
presents a small surface area for users to approach
and extract value from the rest of Spring.
• To provide a range of non-functional features that
are common to large classes of projects (e.g.
embedded servers, security, metrics, health checks,
externalized configuration)
• Grails 3.0 will be based on Spring Boot.
3
What and Why ?
• Stand-alone Spring applications with negligible efforts.
• No code generation and no requirement for XML Config
• Automatic configuration by creating sensible defaults
• Provides Starter dependencies / Starter POMs.
• Structure your code as you like
• Supports Gradle and Maven
• Provides common non-functional production ready features for a
“Real” application such as
– security
– metrics
– health checks
– externalised configuration
Key Features
• Quickest way to get a spring app off the ground
• Allows you to run groovy scripts without much boilerplate code
• Not recommended for production
Install using SDK
$ sdk install springboot
Running groovy scripts
$ spring run app.groovy
$ spring jar test.jar app.groovy
Rapid Prototyping : Spring CLI
@Controller
class Example {
@RequestMapping("/")
@ResponseBody
public String helloWorld() {
"Hello Spring boot audience!!!"
}
}
Getting Started Quickly using CLI
// import org.springframework.web.bind.annotation.Controller
// other imports ...
// @Grab("org.springframework.boot:spring-boot-starter-web:0.5.0")
// @EnableAutoConfiguration
@Controller
class Example {
@RequestMapping("/")
@ResponseBody
public String hello() {
return "Hello World!";
}
// public static void main(String[] args) {
// SpringApplication.run(Example.class, args);
// }
}
What Just Happened ?
 One-stop-shop for all the Spring and related technology
 A set of convenient dependency descriptors
 Contain a lot of the dependencies that you need to get a project up
and running quickly
 All starters follow a similar naming pattern;
 spring-boot-starter-*
 Examples
 spring-boot-starter-web(tomcat and spring mvc dependencies)
– spring-boot-starter-actuator
– spring-boot-starter-security
– spring-boot-starter-data-rest
– spring-boot-starter-amqp
– spring-boot-starter-data-jpa
– spring-boot-starter-data-elasticsearch
– spring-boot-starter-data-mongodb
Starter POMs
@Grab('spring-boot-starter-security')
@Grab('spring-boot-starter-actuator')
@Grab('spring-boot-starter-jetty')
@Controller
class Example {
@RequestMapping("/")
@ResponseBody
public String helloWorld() {
return "Hello Audience!!!"
}
}
//security.user.name
//security.user.password
//actuator endpoints: /beans, /health, /mappings, /metrics etc.
Demo : Starter POM
Spring Initializer
● Using Intellij Idea Spring initializer
● Using start.spring.io https://start.spring.io/
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
buildscript {
repositories { mavenCentral()}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE")
classpath 'org.springframework:springloaded:1.2.0.RELEASE'
}
}
repositories { mavenCentral() }
dependencies {
compile 'org.codehaus.groovy:groovy-all'
compile 'org.springframework.boot:spring-boot-starter-web'
}
Generated Gradle Build Script
12
$ gradle build
$ java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar
Build and Deploy
• Put application.properties/application.yml somewhere in classpath
• Easy one: src/main/resources folder
13
app:
name: Springboot+Config+Yml+Demo
version: 1.0.0
server:
port: 8080
settings:
counter: 1
---
spring:
profiles: development
server:
port: 9001
app.name=Springboot+Config+Demo
app.version=1.0.0
server.port=8080
settings.counter=1
application.properties
app.name=Springboot+Config+D
emo
app.version=1.0.0
server.port=8080
application-dev.properties
Environments and Profiles
application.properties
14
export SPRING_PROFILES_ACTIVE=development
export SERVER_PORT=8090
gradle bootRun
java -jar build/libs/demo-1.0.0.jar
java -jar -Dspring.profiles.active=development build/libs/dem-1.0.0.jar
java -jar -Dserver.port=8090 build/libs/demo-1.0.0.jar
OS env variable
with a -D argument (JVM Argument)
Examples
15AQA1
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "app")
public class AppInfo {
private String name;
private String version;
}
Using ConfigurationProperties annotation
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value('${app.name}')
private String appName;
@Value('${server.port}')
private Integer port;
}
Using Value annotation
Binding Properties
Using Spring data:MySQL
• Add dependency
• Configure database URL
compile 'mysql:mysql-connector-java:5.1.6'
compile 'org.springframework.boot:spring-boot-starter-jdbc'
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
spring.datasource.url= jdbc:mysql://localhost/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=create-drop
•
• Entity class
•
import javax.persistence.*;
@Entity
public class User{
@Id
private Long id;
private String name;
//Getter and Setter
}
Using Spring data:MySQL
•
• Add repository interface
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long>{
User findByName(String name);
}
• Usage
@Autowired
private UserRepository userRepository;
userRepository.findByName();
userRepository.save();
userRepository.findAll();
For more : http://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations-
096251.html
View templates libraries(A
Glimpse)
• JSP/JSTL
• Thymeleaf
• Freemarker
• Velocity
• Tiles
• GSP
• Groovy Template Engine
20
Logging
$ java -jar myapp.jar --debug
logging.level.*: DEBUG_LEVEL
E.g.
logging.level.intellimeet: ERROR
Actuator for Production
ID Description Sensitiv
e
autoconfig Displays an auto-configuration report showing all auto- configuration
candidates and the reason why they ‘were’ or ‘were not’ applied.
true
beans Displays a complete list of all the Spring beans in your application. true
configprops Displays a collated list of all @ConfigurationProperties. true
dump Performs a thread dump. true
env Exposes properties from Spring’s ConfigurableEnvironment. true
health Shows application health information (a simple ‘status’ when accessed over
an unauthenticated connection or full message details when authenticated).
false
info Displays arbitrary application info. false
metrics Shows ‘metrics’ information for the current application. true
mappings Displays a collated list of all @RequestMapping paths. true
shutdown Allows the application to be gracefully shutdown (not enabled by default). true
trace Displays trace information (by default the last few HTTP requests). true
Miscellaneous
- Enabling Disabling the Banner
- Changing the Banner
(http://www.kammerl.de/ascii/AsciiSignature.php)
- Adding event Listeners
- Logging startup info
References
25
Samples : https://github.com/bhagwat/spring-boot-samples
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-gvm-
cli-installation
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-cli/samples
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter-
poms
http://spring.io/guides/gs/accessing-mongodb-data-rest/
https://spring.io/guides/gs/accessing-data-mongodb/
https://spring.io/guides/gs/accessing-data-jpa/
http://www.gradle.org/
http://www.slideshare.net/Soddino/developing-an-application-with-spring-boot-34661781
http://presos.dsyer.com/decks/spring-boot-intro.html
http://pygments.org/ for nicely formatting code snippets included in presentation
Spring boot Introduction

Mais conteúdo relacionado

Mais procurados

Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 

Mais procurados (20)

Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 
Spring beans
Spring beansSpring beans
Spring beans
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 

Destaque

Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
Gunith Devasurendra
 
Grafico diario del dax perfomance index para el 08 02-2012
Grafico diario del dax perfomance index para el 08 02-2012Grafico diario del dax perfomance index para el 08 02-2012
Grafico diario del dax perfomance index para el 08 02-2012
Experiencia Trading
 
Oral Presentation marc nogue
Oral Presentation marc nogueOral Presentation marc nogue
Oral Presentation marc nogue
pujiman
 

Destaque (18)

Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der Praxis
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
REST API Best (Recommended) Practices
REST API Best (Recommended) PracticesREST API Best (Recommended) Practices
REST API Best (Recommended) Practices
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015Spring Boot. Boot up your development. JEEConf 2015
Spring Boot. Boot up your development. JEEConf 2015
 
JEEConf 2016. Effectiveness and code optimization in Java applications
JEEConf 2016. Effectiveness and code optimization in  Java applicationsJEEConf 2016. Effectiveness and code optimization in  Java applications
JEEConf 2016. Effectiveness and code optimization in Java applications
 
IBAGRADS Admission Counseling Seminar
IBAGRADS Admission Counseling SeminarIBAGRADS Admission Counseling Seminar
IBAGRADS Admission Counseling Seminar
 
Peran ilmu sejarah peradaban kedokteran islam
Peran ilmu sejarah peradaban kedokteran islamPeran ilmu sejarah peradaban kedokteran islam
Peran ilmu sejarah peradaban kedokteran islam
 
IMSP Curriculum Conference (16 Dec 2010)
IMSP Curriculum Conference (16 Dec 2010)IMSP Curriculum Conference (16 Dec 2010)
IMSP Curriculum Conference (16 Dec 2010)
 
Grafico diario del dax perfomance index para el 08 02-2012
Grafico diario del dax perfomance index para el 08 02-2012Grafico diario del dax perfomance index para el 08 02-2012
Grafico diario del dax perfomance index para el 08 02-2012
 
Product management by Ashutosh P Singh
Product management by Ashutosh P SinghProduct management by Ashutosh P Singh
Product management by Ashutosh P Singh
 
Bolero Crowdfunding Inspiratiesessie Leuven - 21 april 2016
Bolero Crowdfunding Inspiratiesessie Leuven - 21 april 2016Bolero Crowdfunding Inspiratiesessie Leuven - 21 april 2016
Bolero Crowdfunding Inspiratiesessie Leuven - 21 april 2016
 
About- Face: Reflections on Growing an Open-Source Mentality
About- Face: Reflections on Growing an Open-Source MentalityAbout- Face: Reflections on Growing an Open-Source Mentality
About- Face: Reflections on Growing an Open-Source Mentality
 
New+residential+construction+%28 march+2016%29
New+residential+construction+%28 march+2016%29New+residential+construction+%28 march+2016%29
New+residential+construction+%28 march+2016%29
 
Oral Presentation marc nogue
Oral Presentation marc nogueOral Presentation marc nogue
Oral Presentation marc nogue
 
Jacqueline morocho origendelainternet
Jacqueline morocho origendelainternetJacqueline morocho origendelainternet
Jacqueline morocho origendelainternet
 
Saul Bass - The Man with the Golden Arm
Saul Bass - The Man with the Golden ArmSaul Bass - The Man with the Golden Arm
Saul Bass - The Man with the Golden Arm
 

Semelhante a Spring boot Introduction

Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
DataArt
 
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
🎤 Hanno Embregts 🎸
 

Semelhante a Spring boot Introduction (20)

Spring boot wednesday
Spring boot wednesdaySpring boot wednesday
Spring boot wednesday
 
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdfdokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
 
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdfdokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
 
Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!Building a Spring Boot Application - Ask the Audience!
Building a Spring Boot Application - Ask the Audience!
 
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
Станислав Сидоренко «DeviceHive Java Server – миграция на Spring Boot»
 
Grails Spring Boot
Grails Spring BootGrails Spring Boot
Grails Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applicationsSpring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applications
 
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
 
Spring Boot Whirlwind Tour
Spring Boot Whirlwind TourSpring Boot Whirlwind Tour
Spring Boot Whirlwind Tour
 
Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)
Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)
Building a Spring Boot Application - Ask the Audience! (from JVMCon 2018)
 
Play Support in Cloud Foundry
Play Support in Cloud FoundryPlay Support in Cloud Foundry
Play Support in Cloud Foundry
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Story ofcorespring infodeck
Story ofcorespring infodeckStory ofcorespring infodeck
Story ofcorespring infodeck
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
Spring boot for buidling microservices
Spring boot for buidling microservicesSpring boot for buidling microservices
Spring boot for buidling microservices
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
dokumen.tips_introduction-to-spring-boot-58bb649a21ce5.pptx
dokumen.tips_introduction-to-spring-boot-58bb649a21ce5.pptxdokumen.tips_introduction-to-spring-boot-58bb649a21ce5.pptx
dokumen.tips_introduction-to-spring-boot-58bb649a21ce5.pptx
 
Struts2-Spring=Hibernate
Struts2-Spring=HibernateStruts2-Spring=Hibernate
Struts2-Spring=Hibernate
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming model
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Spring boot Introduction