<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Spring-Mvc on Java &amp; Moi</title><link>https://javaetmoi.com/tags/spring-mvc/</link><description>Recent content in Spring-Mvc on Java &amp; Moi</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Thu, 07 Dec 2017 17:26:12 +0000</lastBuildDate><atom:link href="https://javaetmoi.com/tags/spring-mvc/feed.xml" rel="self" type="application/rss+xml"/><item><title>Migration Spring MVC vers Spring WebFlux</title><link>https://javaetmoi.com/2017/12/migration-spring-web-mvc-vers-spring-webflux/</link><pubDate>Thu, 07 Dec 2017 17:26:12 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1794</guid><description>&lt;p&gt;&lt;a href="wp-content/uploads/2017/12/spring-webflux.png"&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt=""
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2017/12/spring-webflux.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/a&gt;&lt;a href="https://docs.spring.io/spring-framework/docs/5.0.1.RELEASE/spring-framework-reference/web-reactive.html#spring-webflux"&gt;&lt;strong&gt;Spring WebFlux&lt;/strong&gt;&lt;/a&gt; est une &lt;strong&gt;fonctionnalit&lt;/strong&gt; &lt;strong&gt;é majeure&lt;/strong&gt; de &lt;strong&gt;Spring Framework 5&lt;/strong&gt;. Disposant de son propre module Maven (spring-weblux), ce &lt;strong&gt;nouveau framework web&lt;/strong&gt; se positionne comme une &lt;strong&gt;alternative&lt;/strong&gt; &lt;strong&gt;à Spring Web MVC.&lt;/strong&gt; Ce dernier a été conçu par-dessus l’API Servlet. Spring WebFlux l’a été pour les &lt;strong&gt;applications r&lt;/strong&gt; &lt;strong&gt;éactives&lt;/strong&gt;, avec I/O non bloquantes, asynchrones, &lt;strong&gt;à faible latence&lt;/strong&gt;, basées sur des serveurs comme Netty, Undertow ou compatibles Servlets 3.1 et +.
Spring WebFlux s’éloigne du modèle d’un thread par requête HTTP et se base désormais sur le projet &lt;a href="https://projectreactor.io/"&gt;&lt;strong&gt;Reactor&lt;/strong&gt;&lt;/a&gt; pour orchestrer le traitement des requêtes.
Conçu avant tout pour exposer des &lt;strong&gt;API REST&lt;/strong&gt; attaquant des bases NoSQL non bloquantes dans des architecture micro-services, Spring WebFlux peut être utilisé sur des applications web dont les &lt;strong&gt;IHM&lt;/strong&gt; sont rendues côté serveur (ex : avec Thymeleaf ou Freemarker).&lt;/p&gt;
&lt;p&gt;J’ai récemment migré vers Spring WebFlux la &lt;a href="http://github.com/spring-petclinic/spring-petclinic-kotlin"&gt;version Kotlin et Spring Boot de l’application démo Spring Petclinic&lt;/a&gt;. Dans ce court billet, je voulais vous lister les adaptations mises en œuvre dans le &lt;a href="https://github.com/spring-petclinic/spring-petclinic-kotlin/commit/279b2e7c58906d9a765e7229043c7d563f016b1c"&gt;commit 279b2e7&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="spring-webflux"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2017/12/spring-webflux.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Up-to-date Spring Framework Petclinic presentation</title><link>https://javaetmoi.com/2017/02/spring-framework-petclinic-presentation/</link><pubDate>Fri, 10 Feb 2017 07:40:20 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1672</guid><description>&lt;p&gt;Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-­oriented applications.
The « canonical » version of Spring Petclinic is based on Spring Boot and Thymeleaf. But many forks exists: distributed version (microservices) built with Spring Cloud, React, AngularJS. The fork we are talking about is named &lt;strong&gt;Spring&lt;/strong&gt; &lt;strong&gt;Framework&lt;/strong&gt; &lt;strong&gt;Petclinic&lt;/strong&gt;. It maintains a Petclinic version both with a &lt;strong&gt;plain old Spring Framework configuration&lt;/strong&gt; and a &lt;strong&gt;3-layer architecture&lt;/strong&gt; (i.e. presentation &amp;ndash;&amp;gt; service &amp;ndash;&amp;gt; repository).&lt;/p&gt;</description></item><item><title>Spring Core 4.2 Certification Mock Exam</title><link>https://javaetmoi.com/2016/01/spring-core-4-2-certification-mock-exam/</link><pubDate>Mon, 18 Jan 2016 07:05:32 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1508</guid><description>&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="spring-pro-cert"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2016/01/spring-pro-cert.jpg"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
Four years ago, I’ve published a first &lt;a href="http://javaetmoi.com/2012/02/core-spring-3-0-certification-mock-exam/"&gt;mock exam for the Spring Core 3.0 Certification&lt;/a&gt;. Encouraged by Michael and Alan, I’ve updated this &lt;strong&gt;free&lt;/strong&gt; &lt;strong&gt;mock exam&lt;/strong&gt; for the &lt;a href="http://pivotal.io/academy#certification"&gt;Spring Professional certification based on the Spring Core 4.2 course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;According to the &lt;a href="wp-content/uploads/2016/01/Core-Spring-4.2-Certification-Study-Guide.pdf"&gt;Core Spring 4.2 Certification Study Guide&lt;/a&gt;, 3 new topics have been added to the &lt;strong&gt;Spring Core 4.2 mock exam&lt;/strong&gt;: &lt;strong&gt;REST&lt;/strong&gt;, &lt;strong&gt;Microservices&lt;/strong&gt; and &lt;strong&gt;Spring Cloud&lt;/strong&gt;. They replace older topics: JMX, JMS and Remoting.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="spring-pro-cert"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2016/01/spring-pro-cert.jpg"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Démystifier l’annotation @SessionAttributes de Spring MVC</title><link>https://javaetmoi.com/2014/10/annotation-sessionattributes-modelattribute-spring-mvc/</link><pubDate>Tue, 14 Oct 2014 04:53:33 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1216</guid><description>&lt;a href="wp-content/uploads/2014/05/logo-spring-highres.png"&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="logo-spring-highres"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2014/05/logo-spring-highres.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/a&gt; Le développement d’applications web requière une vigilance toute particulière quant à l’utilisation de la &lt;strong&gt;session web&lt;/strong&gt;. Spring MVC offre les mécanismes permettant aux développeurs de ne plus manipuler directement l’objet &lt;strong&gt;&lt;em&gt;HttpSession&lt;/em&gt;&lt;/strong&gt; mis à disposition par le conteneur web. Les 2 annotations &lt;strong&gt;&lt;em&gt;@Scope(&amp;ldquo;session&amp;rdquo;)&lt;/em&gt;&lt;/strong&gt; et &lt;strong&gt;&lt;em&gt;@SessionAttributes&lt;/em&gt;&lt;/strong&gt; en font parties. Dans ce billet, je vous expliquerai &lt;strong&gt;le fonctionnement de l’annotation &lt;em&gt;@SessionAttributes&lt;/em&gt;&lt;/strong&gt; qu’il est essentiel de maitriser avant d’utiliser. Nous verrons qu’elle fonctionne de pair avec l’annotation &lt;strong&gt;&lt;em&gt;@ModelAttribute&lt;/em&gt;&lt;/strong&gt; et qu’elle permet de simuler une &lt;strong&gt;portée conversation&lt;/strong&gt;. Nous commencerons cet article par rappeler ce qu’est &lt;strong&gt;un modèle&lt;/strong&gt; et nous le terminerons en &lt;strong&gt;testant&lt;/strong&gt; &lt;strong&gt;unitairement&lt;/strong&gt; du code qui utilise &lt;em&gt;@SessionAttributes&lt;/em&gt;.</description></item><item><title>Validation HTML 5 avec Spring MVC et Bean Validation</title><link>https://javaetmoi.com/2014/09/validation-html-5-avec-spring-mvc-et-bean-validation/</link><pubDate>Tue, 16 Sep 2014 06:40:53 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1199</guid><description>&lt;p&gt;&lt;a href="wp-content/uploads/2014/09/2014-09-input-spring-mvc-en-html5-logo.png"&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Logo HTML 5"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2014/09/2014-09-input-spring-mvc-en-html5-logo.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cet article explique comment &lt;strong&gt;étendre Spring MVC pour générer le code HTML 5&lt;/strong&gt; &lt;strong&gt;des champs de saisie&lt;/strong&gt; (input fields) à partir des &lt;strong&gt;annotations Bean Validation&lt;/strong&gt; (JSR 330) apposées sur des Entités ou de simples DTO.&lt;/p&gt;
&lt;p&gt;Dans une application web &lt;strong&gt;, valider les écrans de saisie côté client&lt;/strong&gt; permet de donner un retour rapide à l’utilisateur. Avant HTML 5, le développeur web était bien démuni pour implémenter ces contrôles de surface sur le Navigateur. Certes, HTML 4 permettait de spécifier la taille max des champs de saisie (balise &lt;em&gt;maxLength&lt;/em&gt;) et leur caractère obligatoire ou non (balise &lt;em&gt;required&lt;/em&gt;). Les autres contrôles effectués côté serveur étaient alors bien souvent recodés en JavaScript à l’aide de jQuery, de CSS et de quelques plugins.
Aujourd’hui, HTML 5 se démocratise et le code JavaScript de validation devrait bientôt s’alléger drastiquement. En effet, cette spécification permet de standardiser la validation des champs de saisie côté client. Le développeur a désormais la possibilité de spécifier le type de champs (ex : nombre, date, URL …), des valeurs min et max ou bien encore un pattern de validation à l’aide d’une expression régulière.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Logo HTML 5"
class="image_figure image_internal image_unprocessed"
src="https://javaetmoi.com/wp-content/uploads/2014/09/2014-09-input-spring-mvc-en-html5-logo.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Configurez Spring en Java</title><link>https://javaetmoi.com/2014/06/spring-framework-java-configuration/</link><pubDate>Mon, 16 Jun 2014 05:07:42 +0000</pubDate><guid isPermaLink="false">http://javaetmoi.com/?p=1122</guid><description>Dans ce billet, nous verrons comment &lt;strong&gt;configurer en Java&lt;/strong&gt; le &lt;strong&gt;contexte Spring&lt;/strong&gt; d’une application basée sur &lt;strong&gt;Spring MVC&lt;/strong&gt;, &lt;strong&gt;Spring Security&lt;/strong&gt;, &lt;strong&gt;Spring Data JPA&lt;/strong&gt; et &lt;strong&gt;Hibernate&lt;/strong&gt;, et cela sans utiliser la moindre ligne de XML.&lt;br&gt;Personnellement, je n’ai rien contre la &lt;strong&gt;syntaxe XML&lt;/strong&gt; à laquelle j’étais habitué. D’autant la &lt;strong&gt;verbosité&lt;/strong&gt; de la configuration avait considérablement diminué grâce à l’introduction des &lt;strong&gt;namespaces XML&lt;/strong&gt; et des &lt;strong&gt;annotations&lt;/strong&gt;. Avant d’utiliser la syntaxe Java sur une application d’entreprise, j’étais même sceptique quant aux gains qu’elle pouvait apporter. Aujourd’hui, je comprends mieux son intérêt et pourquoi les projets du portfolio Spring tels &lt;a href="http://spring.io/blog/2014/04/30/spring-integration-4-0-released"&gt;Spring Integration 4.0&lt;/a&gt;, &lt;a href="#ZgotmplZ"&gt;Spring Web Service 2.2&lt;/a&gt; ou bien &lt;a href="http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security"&gt;Spring Security 3.2&lt;/a&gt; proposent dans leur dernière version un niveau de configuration Java iso-fonctionnel avec leur équivalent XML. Sans compter que le support de la configuration Java leur ouvre la porte d’une intégration plus poussée à &lt;a href="http://projects.spring.io/spring-boot/"&gt;&lt;strong&gt;Spring Boot&lt;/strong&gt;&lt;/a&gt;, le nouveau fer de lance de Pivotal.&lt;br&gt;</description></item></channel></rss>