Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Boot 1.3 pour le web

Spring Boot 1.3 pour le web

Spring Boot est déjà très populaire parmi les développeurs et apporte une approche “convention over configuration” flexible pour la création d’applications. Cette session université va se concentrer sur le développement d’une application web pour la gestion des clés de configuration Spring Boot.

Nous verrons les nouveautés de Spring Boot 1.3, comme les devtools! Nous utiliserons aussi les fonctionnalités de validation, de cache applicatif; nous pourrons aussi configurer notre conteneur de servlet et voir comment gérer au mieux les ressources statiques de nos applications “server-side” classiques ou AngularJS.

Etape suivante, la production! Nous pourrons déployer notre application en prod dans un serveur d’application, ou comme un service systemd, ou encore dans le cloud.

Stéphane Nicoll

April 20, 2016
Tweet

More Decks by Stéphane Nicoll

Other Decks in Programming

Transcript

  1. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a

    Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
    Spring Boot 1.3 pour le web
    Stéphane Nicoll @snicoll
    Brian Clozel @brianclozel

    View full-size slide

  2. Comment créer une appli web avec
    Spring Boot 1.3?

    View full-size slide

  3. Externalized Configuration
    § Gérer la configuration d’une application
    § application-*.properties, application.yml
    § Clés définies par l’équipe Spring Boot

    « server.port », « spring.datasource… »

    View full-size slide

  4. L’équipe Spring Boot doit gérer

    ces clés de propriétés!

    View full-size slide

  5. Création d’une appli web pour gérer ces clés de props
    § Charger les artifacts maven
    § Lire les méta-données depuis les artifacts maven
    § Générer un modèle représentant les différences
    § Orchestrer le tout dans une application web!

    View full-size slide

  6. Toutes les étapes sont déjà ici:
    § https://github.com/snicoll-demos/spring-boot-4tw-uni/

    § https://speakerdeck.com/snicoll

    View full-size slide

  7. Live coding!

    View full-size slide

  8. Custom banner.txt !

    View full-size slide

  9. Avec Spring Boot 1.4


    #TweetABootBanner
    on Twitter

    View full-size slide

  10. Validation: JSR-303 support

    org.springframework.boot
    spring-boot-starter-validation

    @Constraint(validatedBy = VersionValidator.class)

    View full-size slide

  11. § http://docs.spring.io/spring-boot/docs/current/reference/html/using-
    boot-devtools.html
    Spring Boot Developer Tools

    org.springframework.boot
    spring-boot-devtools
    true

    View full-size slide

  12. Spring MVC Resource chain + Boot integration
    § Gérer les ressources statiques de l’application
    § Plus d’exemples:
    • https://github.com/bclozel/spring-resource-handling
    • https://github.com/bclozel/resource-handling-workshop

    View full-size slide

  13. Actuator: custom Health check
    @Bean
    public HealthIndicator forTheWebHealthIndicator() {
    return () -> {
    if (new Random().nextBoolean()) {
    return Health.up().build();
    }
    else {
    return Health.down()
    .withDetail("Ooops", 42).build();
    }
    };
    }

    View full-size slide

  14. Actuator: CounterService
    @Autowired
    private CounterService counterService;
    private void logMetrics(DiffRequest diffRequest) {
    this.counterService.increment("diff.from." +
    diffRequest.getFromVersion());
    this.counterService.increment("diff.to." +
    diffRequest.getToVersion());
    }

    View full-size slide

  15. Caching auto-configuration in Spring Boot
    @Bean
    public JCacheManagerCustomizer cacheManagerCustomizer() {
    return cm -> {
    cm.createCache("diffs", new MutableConfiguration<>()
    .setExpiryPolicyFactory(CreatedExpiryPolicy
    .factoryOf(Duration.ONE_HOUR))
    .setStoreByValue(false)
    .setStatisticsEnabled(true));
    };
    }

    View full-size slide

  16. Create your own type safe config classes
    § Describe app properties in POJOs + javadoc
    § Declare them as @ConfigurationProperties
    § Scan them with @EnableConfigurationProperties
    § Metadata is generated by spring-boot-configuration-processor
    § Get IDE support and type-safe configuration in your app!

    View full-size slide

  17. Spring Framework 4.2 integration
    § Jackson @JsonView
    § HTTP Caching improvements
    § CORS support with @CrossOrigin

    View full-size slide

  18. Unless otherwise indicated, these slides are © 2013-2016 Pivotal Software, Inc. and licensed under a

    Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
    The Spring BOF
    Jeudi 19h45-20h35

    View full-size slide

  19. Merci!
    Unless otherwise indicated, these slides are 

    © 2013-2016 Pivotal Software, Inc. and licensed under a
    Creative Commons Attribution-NonCommercial
    license: http://creativecommons.org/licenses/by-nc/3.0/
    Stéphane Nicoll

    [email protected]

    Brian Clozel
    [email protected]

    View full-size slide