Détails :
Dans un premier temps on crée une simple servlet AfficherMessagesAction.
Imaginons que cette servlet ait besoin de propriétés de configuration. Une url vers une autre application par exemple, ou un paramètre "nombre de lignes par tableau"...
Il est souhaitable de configurer cette propriété dans un fichier .properties et de pouvoir la récupérer facilement par la suite.
On va donc créer un service ConfigurationService qui va charger ce fichier .properties et rendre les paramètres de configuration disponibles dans toute l'application.

Projet réalisé avec :
Eclipse Europa 3.3.1.1
Apache Tomcat 5.5.26
Plugin Maven pour Eclipse http://m2eclipse.codehaus.org/
Java JDK 1.5
Spring 2.5.5


(Les sources du projet sont disponibles en annexe)

1- Création de l'interface ConfigurationService
Les fonctionnalités de notre service de configuration sont très simples. On veut pouvoir :

  • obtenir une propriété à partir d'une clé
  • obtenir le nombre de propriétés de notre service
  • pouvoir initialiser ce service

D'où l'interface suivante :

public interface ConfigurationService {
 
	/**
	 * Initialisation du service de configuration
	 */
	void init();
 
	/**
	 * Récuparation d'une propriété à partir de sa clé
	 * @param key clé
	 * @return - une propriété <br>
	 * - null si la clé est null, ou si elle n'existe pas 
	 */
	String getProperties(String key);
 
	/**
	 * Retourne le nombre de propriétés
	 * @return
	 */
	int getNbProperties();
 
}


2- Création de l'implémentation ConfigurationServiceImpl

public class ConfigurationServiceImpl implements ConfigurationService {
	private Properties properties;
	private Resource resource;
	private static Log logger = LogFactory.getLog(ConfigurationServiceImpl.class);
 
	public String getProperties(String key) {
		if(key==null || "".equals(key)) {
			return null;
		} else {
			String propertie = properties.getProperty(key);
			if(propertie==null) {
				logger.warn("Aucune propriete associee a la cle : "+key);
			}
			return propertie;
		}
	}
 
	public void init() {
		properties = new Properties();
		if(resource!=null) {
			//on verifie que le fichier resource existe
			if(resource.exists()) {
				try {
					//on charge le fichier resource dans l'objet properties
					properties.load(resource.getInputStream());
				} catch (IOException e) {
					logger.warn("Erreur lors du chargement du fichier resource : "+
						resource.getDescription(),e);
				}
			} else {
				logger.warn("Le fichier resource n'existe pas : "+
					resource.getDescription());
			}
		} else {
			logger.warn("Le fichier resource est null");
		}
	}
 
	public int getNbProperties() {
		if(properties==null) {
			return 0;
		} else {
			return properties.size();
		}		
	}
 
	public void setResource(Resource resource) {
		this.resource = resource;
	}
}


Précisions :

  • Les propriétés utilisées dans toute notre application sont stockées dans un Properties.
  • On définit un attribut resource avec son setter public. Avec Spring, nous allons pouvoir charger un fichier au démarrage de l'application.
  • La méthode init utilise la ressource chargée pour remplir l'objet properties.