SlideShare une entreprise Scribd logo
5
Plus lue
8
Plus lue
15
Plus lue
Introduction à
Spring Boot
4 octobre 2016
Objectifs
 Donner envie d’utiliser Spring Boot
 Démystifier le fonctionnement de l’auto-configuration
 Montrer Spring Boot en action
 Partager un retour d’expérience de migration vers Spring Boot
Sommaire
 Les principes de Spring Boot
 Le traditionnel Hello World
 Configuration applicative
 Des tests simplifiés
 Démo : développement d’une application Hello World
 Etudes de cas : migration de l’application Spring Petclinic
 Aperçu des autres fonctionnalités
L’explosion Spring Boot
Les idées fortes
 Accélérer le développement d’applications Spring
 Convention over Configuration
 Pas de code généré
 Déploiement facilité
 Prêt pour la production
Hello World
 Application REST = 1 classe Java +1 pom.xml
@SpringBootApplication
@RestController
public class HelloWorld {
public static void main(String[] args) {
SpringApplication.run(HelloWorld.class, args);
}
@RequestMapping("/")
public String hello() {
return "Hello World!";
}
}
Technologies supportées
 Core : Spring Security, JTA, Spring Cache, Spring Session
 Web : Spring MVC, Websocket, Jersey, Mobile, HATEOS
 Moteurs de templates : Freemaker, Thymeleaf, Groovy, Mustache
 Database
 SGBDR : Spring Data JPA, JDBC, JOOQ
 NoSQL : Redis, MongoDB, Elasticsearch, Cassandra
 La suite Spring Cloud : Eureka, Hystrix, Turbine, AWS, OAuth2
 I/O : Spring Batch et Integration, JavaMail, Camel, JMS, AMQP
 Social : Facebook, Linkedin, Twitter
Auto-configuration (1/2)
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
 L’annotation @SpringBootApplication déclenche la configuration
automatique de l’infrastructure Spring
 Au démarrage de l’application, Spring Boot :
 Scanne toutes classes de @Configuration
 Classes de configuration spécifiques à l’application
 Classes de Spring Boot suffixées par AutoConfiguration (110 dans Spring Boot 1.4.1)
 3rd party starters
 Utilise les JAR présents dans le classpath pour prendre des décisions
Auto-configuration (2/2)
 Repose sur des activations conditionnelles
 @Conditional, @ConditionalOnProperty, @ConditionalOnClass,
@ConditionalOnMissingClass ,@ConditionalOnMissingBean ,
@ConditionalOnWebApplication, @ConditionalOnNotWebApplication,
@ConditionalOnExpression
 Possibilité de créer sa propre librairie auto-configurable
Auto-configuration de Spring JDBC
@Configuration
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
@ConditionalOnSingleCandidate(DataSource.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class JdbcTemplateAutoConfiguration {
private final DataSource dataSource;
public JdbcTemplateAutoConfiguration(DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean
@Primary
@ConditionalOnMissingBean(JdbcOperations.class)
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(this.dataSource);
}
@Bean
@Primary
@ConditionalOnMissingBean(NamedParameterJdbcOperations.class)
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(this.dataSource);
}
}
Auto-configuration de la DataSource
 Complexité de DataSourceAutoConfiguration
 Récupération de la DataSource par JNDI
 Choix du pool de connexions : Tomcat, HikariCP, Commons DBCP 1 ou 2
 Paramétrage de la connexion à la base de données
 Configuration application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 Base de données embarquée par analyse des JAR dans le classpath
 Support du XA
 Exposition du pool via JMX
Configuration applicative
 Centralisée dans
 application.properties
 ou application.yml
 Complétion dans l’IDE
 Configuration extensible et TypeSafe
 @ConfigurationProperties
 Possibilité de configuration spécifique à un environnement de déploiement
 java -jar myapp,jar --spring.profiles.active=production
 Charge application-production.properties
Des tests auto-configurés
 Le starter spring-boot-starter-test tire les frameworks de test :
JUnit, Spring Test, AssertJ, Mockito, JsonPath, JSONassert et Hamcrest.
 Fonctionnalité de « test slicing »
 Permet de segmenter les tests : couche présentation, contrôleurs REST, DAO …
 Spring Boot se charge de créer un contexte applicatif dédié
 Jeu d’annotations : @WebMvcTest, @JsonTest, @DataJpaTest, @RestClientTest
 Possibilité de créer son propre slice (ex: @DataJdbcTest)
 Création automatique de simulacres avec @MockBean
 Pour les tests d’intégration, @SpringBootTest permet de démarrer un
conteneur de servlet
@RunWith(SpringRunner.class)
@WebMvcTest(OwnerController.class)
public class OwnerControllerTests {
@Autowired
private MockMvc mockMvc;
@MockBean
private ClinicService clinicService;
@Test
public void testDisplayOwner() throws Exception {
Owner george = new Owner(1, "George", "Franklin");
given(this.clinicService.findOwnerById(1)).willReturn(george);
mockMvc.perform(get("/owners/{ownerId}", 1))
.andExpect(status().isOk())
.andExpect(model().attribute("owner", hasProperty("lastName", is("Franklin"))))
.andExpect(model().attribute("owner", hasProperty("firstName", is("George"))))
.andExpect(view().name("owners/ownerDetails"));
}
}
Exemple de test unitaire
Initialisation d’un contexte applicatif
web scannant les beans Spring MVC et
configuration du MockMvc
Simulacre Mockito enregistré dans le
contexte applicatif Spring et mis à
disposition par auto-wiring
Alias pour SpringJUnit4ClassRunner
Live coding
 Utilisation de Spring Initializr depuis IntelliJ : WEB, JPA, thymeleaf
 Utilisation de la base de données H2
 Création d’un service REST HelloWorld
 Configuration du logger
 Migration Tomcat vers Jetty
 Démo des actuators
 Personnalisation de la bannière
 Exécution d’un JAR auto-exécutable
 Changement de port par configuration, paramètre et profile Spring
Etudes de cas : migration Spring Petclinic
Et plein d’autres fonctionnalités
 Personnalisation de la bannière de démarrage
 Prêt pour la Production
 Initialisation de bases de données
 Exécution de jobs Spring Batch
 Shell remote (CRaSH)
 Spring Boot CLI
 Utiliser Jetty ou Undertow à la place de Tomcat
 Live Reload & Hot swapping
 Installation sous forme de service Linux ou Windows
Conclusion
 Permet de mettre en place rapidement une application
Java basée sur Spring
 Diminue drastiquement la configuration Spring
 Peut remplacer un socle d’Entreprise
 Dites adieu aux bons vieux gros serveurs d’applications
 Make JAR not WAR
Ressources
 Manuel de référence de Spring Boot (Pivotal)
 Spring Boot 1.3 pour le web (S. Nicoll et B. Clozel)
 Bootiful Microservice (Josh Long)
 Migrer vers Spring Boot (Antoine Rey)
 Custom test slice with Spring Boot 1.4 (S. Nicoll)
 Spring Guides (Pivotal)

Contenu connexe

PDF
spring-boot-fr.pdf
seydou4devops
 
PDF
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
PDF
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
PDF
cours-gratuit.com--id-4422.pdf
lhoussainebouganfou
 
PDF
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
PDF
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
PDF
Support programmation orientée aspect mohamed youssfi (aop)
ENSET, Université Hassan II Casablanca
 
spring-boot-fr.pdf
seydou4devops
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
cours-gratuit.com--id-4422.pdf
lhoussainebouganfou
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Support programmation orientée aspect mohamed youssfi (aop)
ENSET, Université Hassan II Casablanca
 

Tendances (20)

PDF
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
PDF
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
PDF
Support de cours angular
ENSET, Université Hassan II Casablanca
 
PDF
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
PDF
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
PDF
Architecture jee principe de inversion de controle et injection des dependances
ENSET, Université Hassan II Casablanca
 
PPTX
Introduction à React JS
Abdoulaye Dieng
 
PDF
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
PDF
Cours JavaScript
Olivier Le Goaër
 
PDF
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
PDF
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
PDF
Cours design pattern m youssfi partie 6 proxy
ENSET, Université Hassan II Casablanca
 
PPTX
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
PDF
Spring Framework - AOP
Dzmitry Naskou
 
PDF
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
PDF
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
PDF
Java 8 - collections et stream
Franck SIMON
 
PPT
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
PDF
Cours design pattern m youssfi partie 7 facade bridge flyweight
ENSET, Université Hassan II Casablanca
 
PDF
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
ENSET, Université Hassan II Casablanca
 
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Architecture jee principe de inversion de controle et injection des dependances
ENSET, Université Hassan II Casablanca
 
Introduction à React JS
Abdoulaye Dieng
 
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
Cours JavaScript
Olivier Le Goaër
 
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 6 proxy
ENSET, Université Hassan II Casablanca
 
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
Spring Framework - AOP
Dzmitry Naskou
 
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
Java 8 - collections et stream
Franck SIMON
 
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
ENSET, Université Hassan II Casablanca
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
ENSET, Université Hassan II Casablanca
 
Publicité

Similaire à Introduction à spring boot (20)

PDF
spring-api-rest.pdf
Jaouad Assabbour
 
PPTX
Chapitre 01- Maitriser architecture micro-services avec Spring Boot et Spring...
YounessABOUQORA
 
PDF
tp-spring.pdf
seydou4devops
 
PDF
tp-spring.pdf
badrfathallah2
 
PPTX
Spring boot anane maryem ben aziza syrine
Syrine Ben aziza
 
PDF
Être productif avec JHipster - Devoxx France 2017
Julien Dubois
 
PDF
cours-gratuit.com--id-12477.pdf
ssuser192642
 
PPTX
Workshop Spring - Session 1 - L'offre Spring et les bases
Antoine Rey
 
PDF
Spring 3.0 en production
Spring User Group France
 
PPTX
Spring ioc
Lhouceine OUHAMZA
 
PPTX
Introduction au Spring microservices Batch.pptx
YounessABOUQORA
 
PPTX
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
PPTX
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
PPTX
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
PPTX
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Antoine Rey
 
PDF
ParisJUG Spring Boot
Julien Sadaoui
 
PDF
Spring 3 en production
Julien Dubois
 
PPTX
Démystification de Spring une histoire de pattern
letourneur2
 
PPT
Presentation Spring, Spring MVC
Nathaniel Richand
 
PDF
Application Spring MVC/IOC & Hibernate
Ines Ouaz
 
spring-api-rest.pdf
Jaouad Assabbour
 
Chapitre 01- Maitriser architecture micro-services avec Spring Boot et Spring...
YounessABOUQORA
 
tp-spring.pdf
seydou4devops
 
tp-spring.pdf
badrfathallah2
 
Spring boot anane maryem ben aziza syrine
Syrine Ben aziza
 
Être productif avec JHipster - Devoxx France 2017
Julien Dubois
 
cours-gratuit.com--id-12477.pdf
ssuser192642
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Antoine Rey
 
Spring 3.0 en production
Spring User Group France
 
Spring ioc
Lhouceine OUHAMZA
 
Introduction au Spring microservices Batch.pptx
YounessABOUQORA
 
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
Introduction au Spring Batch pour microservices.pptx
YounessABOUQORA
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Antoine Rey
 
ParisJUG Spring Boot
Julien Sadaoui
 
Spring 3 en production
Julien Dubois
 
Démystification de Spring une histoire de pattern
letourneur2
 
Presentation Spring, Spring MVC
Nathaniel Richand
 
Application Spring MVC/IOC & Hibernate
Ines Ouaz
 
Publicité

Plus de Antoine Rey (10)

PPTX
Quoi de neuf à Devoxx France 2017 ?
Antoine Rey
 
PPTX
Spring Framework Petclinic sample application
Antoine Rey
 
PPTX
Les Streams de Java 8
Antoine Rey
 
PPTX
Retours Devoxx France 2016
Antoine Rey
 
PPTX
Ces outils qui vous font gagner du temps
Antoine Rey
 
PPTX
Tester unitairement une application java
Antoine Rey
 
PPTX
Les dessous du framework spring
Antoine Rey
 
PPTX
Introduction à Angular JS
Antoine Rey
 
PPTX
Workshop Spring - Session 5 - Spring Integration
Antoine Rey
 
PPTX
Workshop Spring - Session 4 - Spring Batch
Antoine Rey
 
Quoi de neuf à Devoxx France 2017 ?
Antoine Rey
 
Spring Framework Petclinic sample application
Antoine Rey
 
Les Streams de Java 8
Antoine Rey
 
Retours Devoxx France 2016
Antoine Rey
 
Ces outils qui vous font gagner du temps
Antoine Rey
 
Tester unitairement une application java
Antoine Rey
 
Les dessous du framework spring
Antoine Rey
 
Introduction à Angular JS
Antoine Rey
 
Workshop Spring - Session 5 - Spring Integration
Antoine Rey
 
Workshop Spring - Session 4 - Spring Batch
Antoine Rey
 

Dernier (12)

PPTX
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
PDF
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
PDF
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
PDF
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
PDF
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
PDF
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
PDF
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
PPTX
voip architecture et installation de solution voip
samiraelazouzy
 
PDF
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
PDF
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
PDF
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
PDF
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
voip architecture et installation de solution voip
samiraelazouzy
 
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 

Introduction à spring boot

  • 2. Objectifs  Donner envie d’utiliser Spring Boot  Démystifier le fonctionnement de l’auto-configuration  Montrer Spring Boot en action  Partager un retour d’expérience de migration vers Spring Boot
  • 3. Sommaire  Les principes de Spring Boot  Le traditionnel Hello World  Configuration applicative  Des tests simplifiés  Démo : développement d’une application Hello World  Etudes de cas : migration de l’application Spring Petclinic  Aperçu des autres fonctionnalités
  • 5. Les idées fortes  Accélérer le développement d’applications Spring  Convention over Configuration  Pas de code généré  Déploiement facilité  Prêt pour la production
  • 6. Hello World  Application REST = 1 classe Java +1 pom.xml @SpringBootApplication @RestController public class HelloWorld { public static void main(String[] args) { SpringApplication.run(HelloWorld.class, args); } @RequestMapping("/") public String hello() { return "Hello World!"; } }
  • 7. Technologies supportées  Core : Spring Security, JTA, Spring Cache, Spring Session  Web : Spring MVC, Websocket, Jersey, Mobile, HATEOS  Moteurs de templates : Freemaker, Thymeleaf, Groovy, Mustache  Database  SGBDR : Spring Data JPA, JDBC, JOOQ  NoSQL : Redis, MongoDB, Elasticsearch, Cassandra  La suite Spring Cloud : Eureka, Hystrix, Turbine, AWS, OAuth2  I/O : Spring Batch et Integration, JavaMail, Camel, JMS, AMQP  Social : Facebook, Linkedin, Twitter
  • 8. Auto-configuration (1/2) @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }  L’annotation @SpringBootApplication déclenche la configuration automatique de l’infrastructure Spring  Au démarrage de l’application, Spring Boot :  Scanne toutes classes de @Configuration  Classes de configuration spécifiques à l’application  Classes de Spring Boot suffixées par AutoConfiguration (110 dans Spring Boot 1.4.1)  3rd party starters  Utilise les JAR présents dans le classpath pour prendre des décisions
  • 9. Auto-configuration (2/2)  Repose sur des activations conditionnelles  @Conditional, @ConditionalOnProperty, @ConditionalOnClass, @ConditionalOnMissingClass ,@ConditionalOnMissingBean , @ConditionalOnWebApplication, @ConditionalOnNotWebApplication, @ConditionalOnExpression  Possibilité de créer sa propre librairie auto-configurable
  • 10. Auto-configuration de Spring JDBC @Configuration @ConditionalOnClass({ DataSource.class, JdbcTemplate.class }) @ConditionalOnSingleCandidate(DataSource.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class) public class JdbcTemplateAutoConfiguration { private final DataSource dataSource; public JdbcTemplateAutoConfiguration(DataSource dataSource) { this.dataSource = dataSource; } @Bean @Primary @ConditionalOnMissingBean(JdbcOperations.class) public JdbcTemplate jdbcTemplate() { return new JdbcTemplate(this.dataSource); } @Bean @Primary @ConditionalOnMissingBean(NamedParameterJdbcOperations.class) public NamedParameterJdbcTemplate namedParameterJdbcTemplate() { return new NamedParameterJdbcTemplate(this.dataSource); } }
  • 11. Auto-configuration de la DataSource  Complexité de DataSourceAutoConfiguration  Récupération de la DataSource par JNDI  Choix du pool de connexions : Tomcat, HikariCP, Commons DBCP 1 ou 2  Paramétrage de la connexion à la base de données  Configuration application.properties spring.datasource.driver-class-name=com.mysql.jdbc.Driver  Base de données embarquée par analyse des JAR dans le classpath  Support du XA  Exposition du pool via JMX
  • 12. Configuration applicative  Centralisée dans  application.properties  ou application.yml  Complétion dans l’IDE  Configuration extensible et TypeSafe  @ConfigurationProperties  Possibilité de configuration spécifique à un environnement de déploiement  java -jar myapp,jar --spring.profiles.active=production  Charge application-production.properties
  • 13. Des tests auto-configurés  Le starter spring-boot-starter-test tire les frameworks de test : JUnit, Spring Test, AssertJ, Mockito, JsonPath, JSONassert et Hamcrest.  Fonctionnalité de « test slicing »  Permet de segmenter les tests : couche présentation, contrôleurs REST, DAO …  Spring Boot se charge de créer un contexte applicatif dédié  Jeu d’annotations : @WebMvcTest, @JsonTest, @DataJpaTest, @RestClientTest  Possibilité de créer son propre slice (ex: @DataJdbcTest)  Création automatique de simulacres avec @MockBean  Pour les tests d’intégration, @SpringBootTest permet de démarrer un conteneur de servlet
  • 14. @RunWith(SpringRunner.class) @WebMvcTest(OwnerController.class) public class OwnerControllerTests { @Autowired private MockMvc mockMvc; @MockBean private ClinicService clinicService; @Test public void testDisplayOwner() throws Exception { Owner george = new Owner(1, "George", "Franklin"); given(this.clinicService.findOwnerById(1)).willReturn(george); mockMvc.perform(get("/owners/{ownerId}", 1)) .andExpect(status().isOk()) .andExpect(model().attribute("owner", hasProperty("lastName", is("Franklin")))) .andExpect(model().attribute("owner", hasProperty("firstName", is("George")))) .andExpect(view().name("owners/ownerDetails")); } } Exemple de test unitaire Initialisation d’un contexte applicatif web scannant les beans Spring MVC et configuration du MockMvc Simulacre Mockito enregistré dans le contexte applicatif Spring et mis à disposition par auto-wiring Alias pour SpringJUnit4ClassRunner
  • 15. Live coding  Utilisation de Spring Initializr depuis IntelliJ : WEB, JPA, thymeleaf  Utilisation de la base de données H2  Création d’un service REST HelloWorld  Configuration du logger  Migration Tomcat vers Jetty  Démo des actuators  Personnalisation de la bannière  Exécution d’un JAR auto-exécutable  Changement de port par configuration, paramètre et profile Spring
  • 16. Etudes de cas : migration Spring Petclinic
  • 17. Et plein d’autres fonctionnalités  Personnalisation de la bannière de démarrage  Prêt pour la Production  Initialisation de bases de données  Exécution de jobs Spring Batch  Shell remote (CRaSH)  Spring Boot CLI  Utiliser Jetty ou Undertow à la place de Tomcat  Live Reload & Hot swapping  Installation sous forme de service Linux ou Windows
  • 18. Conclusion  Permet de mettre en place rapidement une application Java basée sur Spring  Diminue drastiquement la configuration Spring  Peut remplacer un socle d’Entreprise  Dites adieu aux bons vieux gros serveurs d’applications  Make JAR not WAR
  • 19. Ressources  Manuel de référence de Spring Boot (Pivotal)  Spring Boot 1.3 pour le web (S. Nicoll et B. Clozel)  Bootiful Microservice (Josh Long)  Migrer vers Spring Boot (Antoine Rey)  Custom test slice with Spring Boot 1.4 (S. Nicoll)  Spring Guides (Pivotal)

Notes de l'éditeur

  • #5: Source : https://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016-trends/ Sprint Boot 1.0 est sorti en 2013 http://www.indeed.com/jobtrends/q-spring-and-boot.html
  • #6: Convention over Configuration : Opinionated view of the Spring platform and third-party libraries. Plus ou peu de configuration Spring. Pas de code généré : pas de code Java ni de configuration XML ou Java Déploiement facilité : pas de serveur à installer, exécution d’un JAR auto-exécutable avec un java –jar myappli.jar, serveur Jetty/Undertow/Tomcat embarqué Prêt pour la production : configuration externalisée, profils de conf, surcharge de conf, monitoring (actuator), services Windows et Linux, support du CORS, remote shell Mais également : Spring Boot gère pour vous la version des frameworks compatibles les uns avec les autres
  • #7: Encore plus simple en Groovy Support de Graddle et de Ant
  • #8: Autres moteurs de templates : Velocity, JSP (pas en JAR exécutable)
  • #12: DataSourceAutoConfiguration : https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java EmbeddedDatabaseConnection : https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/EmbeddedDatabaseConnection.java
  • #13: java -jar myapp,jar --spring.profiles.active=production
  • #14: https://spring.io/blog/2016/08/30/custom-test-slice-with-spring-boot-1-4
  • #15: Exemple créé à partir de la classe https://github.com/spring-projects/spring-petclinic/blob/springboot/src/test/java/org/springframework/samples/petclinic/web/OwnerControllerTests.java @WebMvcTest recherche les beans @Controller, @ControllerAdvice, @JsonComponent, Filter, WebMvcConfigurer et HandlerMethodArgumentResolver
  • #16: 1. GÈnÈrer un projet avec Spring Initializr depuis IntelliJ Choisir web, JPA, thymeleaf   2. Ajout la dÈpendance vers h2 dans le pom.xml <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> 3. CrÈation de la classe Hello public class Hello {   private final long id; private final String name;   public Hello(long id, String name) { this.id = id; this.name = name; }   public long getId() { return id; }   public String getName() { return name; } }   4. Ajout du contrÙleur @RestController public class HelloController {   private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong();   @RequestMapping("/hello/{name}") public Hello sayHello(@PathVariable String name) { return new Hello(counter.incrementAndGet(), String.format(template, name));   } } 5. Configuration du application.properties logging.level.org.springframework.web=INFO     6. Utilisation de Jetty ‡ la place de Tomcat Modification du pom.xml : <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>   7. Utilisation des actuators Ajout dans le pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 8. Ajout d'informations   ComplÈeter application.properties : info.exemple=Test Puis http://localhost:8082/info   Ajout via maven : <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <!-- Spring Boot Actuator displays build-related information if a META-INF/build-info.properties file is present --> <goals> <goal>build-info</goal> </goals> <configuration> <additionalProperties> <encoding.source>${project.build.sourceEncoding}</encoding.source> <encoding.reporting>${project.reporting.outputEncoding}</encoding.reporting> <java.source>${maven.compiler.source}</java.source> <java.target>${maven.compiler.target}</java.target> </additionalProperties> </configuration> </execution> </executions> </plugin>       9. Personnalisation de la banniËre avec Duke   10. DÈmarrage du JAR java -jar target/demo-0.0.1-SNAPSHOT.jar   11. Changement de port par configuration, paramËtre et profile Spring --server.port=9090 application-prod.properties et --spring.profiles.active=prod      
  • #17: Article complet sur http://javaetmoi.com/2016/08/migrer-vers-spring-boot/
  • #18: Prêt pour la Production : health-check, monitoring, pistes d’audit, métriques => actuator Initialisation de base de données : Flyway et Liquibase. CRaSH permet de connecter à l’application en ssh ou telnet Spring Boot CLI : outils en ligne de commande permetta,t d’exéciton des scripts Groovy. Exemple : spring run app.groovy Service Linux : support de Systemd et init.d (System V)