SlideShare uma empresa Scribd logo
1 de 19
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)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 

Semelhante a Introduction à spring boot

ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
Horacio Gonzalez
 
Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
Jean-Pierre Vincent
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
ST informatique services
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
Mejdeddine Bouzouita
 

Semelhante a Introduction à spring boot (20)

Springioc
SpringiocSpringioc
Springioc
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
2
22
2
 
Jdbc
JdbcJdbc
Jdbc
 
Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJS
 
Marzouk une introduction à jdbc
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbc
 
Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScript
 
PréSentation Qualoo Le Generateur De Code Java J2 Ee
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer Faces
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 

Mais de Antoine Rey

Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
Antoine Rey
 

Mais de Antoine Rey (9)

Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 

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)

Notas do Editor

  1. 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
  2. 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
  3. Encore plus simple en Groovy Support de Graddle et de Ant
  4. Autres moteurs de templates : Velocity, JSP (pas en JAR exécutable)
  5. 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
  6. java -jar myapp,jar --spring.profiles.active=production
  7. https://spring.io/blog/2016/08/30/custom-test-slice-with-spring-boot-1-4
  8. 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
  9. 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      
  10. Article complet sur http://javaetmoi.com/2016/08/migrer-vers-spring-boot/
  11. 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)