La partie cliente de l'application se compose de deux fichiers : une implémentation cliente de l'interface RestSimpleService et un contexte Spring.

Voici l'implémentation de l'interface RestSimpleService partagée par le client et le serveur :

public class RestSimpleClientImpl
    implements RestSimpleService
{
    
    private RestTemplate restTemplate  = null;
    
    private String urlServeur = "";
    
    public Client getClient(final String reference)
    {
        return getRestTemplate().getForObject(
                getUrlServeur() + "/client/{reference}",
                ClientImpl.class,
                reference);
    }

    protected RestTemplate getRestTemplate()
    {
        return this.restTemplate;
    }

    public void setRestTemplate(final RestTemplate restTemplate)
    {
        this.restTemplate = restTemplate;
    }

    protected String getUrlServeur()
    {
        return this.urlServeur;
    }

    public void setUrlServeur(final String urlServeur)
    {
        this.urlServeur = urlServeur;
    }

}

L'utilisation de RestTemplate

Voici les deux beans qui vont avec :

<bean id="restSimple.client"
	class="com.netapsys.restsimple.client.RestSimpleClientImpl">
	<property name="restTemplate" ref="rest.template"/>
	<property name="urlServeur" value="http://localhost:8080/restsimple-serveur"/>
</bean>
	
<bean id="rest.template" class="org.springframework.web.client.RestTemplate"/>

Je vous laisse lire et compiler le code source lié à ce billet pour tester la simplicité du projet.

Quels sont à votre avis les forces et les faiblesses de cette approche ? Ce projet étant vraiment simpliste, ce principe d'architecture est-il utilisable dans un véritable projet industrielle ? Une première réponse par Jean-Baptiste ici.

Voici quelques liens utiles :