Annoncée à SpringOne, la plateforme Spring IO est lancée.
L'objectif de cette plateforme est de fournir aux développeurs un socle technique solide permettant de bâtir des applications modernes.
La plateforme Spring IO se divise en deux parties distinctes :
– Spring fondation
– Sprint Domaine-spécifique runtime environnement (DSRs)
Ce socle de fondation (IO fondation) contient les différents modules techniques que l'on connaît bien chez Spring. En voici une liste (non exaustive) :
– Spring Data,
– Spring Intégration,
– Spring Batch,
– Spring Social,
– Spring WebService,
– etc.
Au-dessus vient la couche d'exécution (IO Execution) composée des trois modules suivants :
– Spring XD
– Spring Boot
– Grails.
Le module qui propose un réel intérêt dans la vie de tous les jours pour un développeur Spring, c'est Spring Boot.
Il permet de démarrer (très) rapidement et simplement un projet. La simplification vient du fait qu'il gère à notre place la cohérence des versions de dépendences utilisées pour le projet.
Pour mieux comprendre la puissance fournie par l'outil, je vous propose un exemple mettant en oeuvre un serveur HTTP répondant le traditionnel 'Hello world' .
Même si l'exemple est simple, il met en avant la simplicité proposée par la plateforme. L'exemple est tiré du site de référence.
Nous avons besoin d'un pom.xml et d'un fichier java possédant une méthode main ainsi que certaines annotations.
*pom.xml :*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!– Inherit defaults from Spring Boot –>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M4</version>
</parent>
<!– Add typical dependencies for a web application –>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!– Package as an executable JAR –>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!– Allow access to Spring milestones and snapshots –>
<!– (you don't need this if you are using anything after 0.5.0.M2) –>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.springsource.org/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.springsource.org/milestone</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.springsource.org/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.springsource.org/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
Fichier Java
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class MyController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(MyController.class, args);
}
}
Une fois le projet Maven créé, il suffit de lancer la commande suivante :
mvn package
pour générer le jar exécutable et ensuite lancer la commande suite :
java -jar target/myproject-0.0.1-SNAPSHOT.jar
pour lancer notre serveur. Une fois le serveur lancé, aller dans votre browser préféré et taper l'adresse suivante :
http://localhost:8080/
Vous devriez voir le résultat suivant dans votre navigateur:
Hello world!.
Concrètement, ce (petit) projet s'appuie sur le module Spring MVC
On peut remarquer que dans le descripteur maven on ne référence pas explicite la version du module utilisé. Celle-ci est définie par le pom parent.
On s'apercoit également, au travers de cet exemple, que très simplement nous avons pu exploiter la puissance de spring sans écrire une seule ligne de configuration xml.
En effet, l'ensemble de la plateforme se base sur le principe de convention par-dessus la configuration. Cela veut dire que si l'on respecte les conventions adoptées par l'outil, alors un certain de nombre de choses est pris en charge automatique.
Aujourd'hui la plateforme n'en est pas encore à une version majeur, néanmoins, celle-ci est déjà largement opérationnelle.
Sur le site du projet, on peut trouver une multitude de 'getting started' se basant sur plusieurs scénarii différents. A partir de ces projets et selon nos besoins on peut mettre en place un projet en '2 temps, 3 mouvements'.
Je ne vous ai présenté qu'un survol assez général, je vous recommande le site de référence. Il est très bien fait et permet une prise en main de l'outil très facilement.
#java #spring.io #springBoot