Chargeur de ressources Spring avec exemple getResource ()
Le chargeur de ressources de Spring fournit une méthodegetResource() très générique pour obtenir les ressources telles que (fichier texte, fichier multimédia, fichier image…) à partir du système de fichiers, du chemin de classe ou de l'URL. Vous pouvez obtenir la méthodegetResource() à partir du contexte de l'application.
Voici un exemple pour montrer comment utilisergetResource() pour charger un fichier texte à partir de
1. Système de fichiers
Resource resource = appContext.getResource("file:c:\\testing.txt");
2. Chemin de l'URL
Resource resource = appContext.getResource("url:http://www.yourdomain.com/testing.txt");
3. Chemin de classe
Resource resource = appContext.getResource("classpath:com/example/common/testing.txt");
Il vous suffit de spécifier l'emplacement de la ressource, et le Spring se chargera du reste et vous renverra un objet Resource.
Exemple complet avec la méthodegetResource()
.
package com.example.common; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.Resource; public class App { public static void main( String[] args ) { ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"If-you-have-any.xml"}); Resource resource = appContext.getResource("classpath:com/example/common/testing.txt"); try{ InputStream is = resource.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); }catch(IOException e){ e.printStackTrace(); } } }
Chargeur de ressources de bean (ResourceLoaderAware)
Étant donné que le bean n'a pas d'accès au contexte de l'application, comment un bean peut-il accéder à des ressources? La solution de contournement consiste à implémenter l'interfaceResourceLoaderAware et à créer une méthode setter pour l'objetResourceLoader. Le printemps DI le chargeur de ressources dans votre bean.
package com.example.customer.services; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; public class CustomerService implements ResourceLoaderAware { private ResourceLoader resourceLoader; public void setResourceLoader(ResourceLoader resourceLoader) { this.resourceLoader = resourceLoader; } public Resource getResource(String location){ return resourceLoader.getResource(location); } }
Fichier de configuration du bean
Exécuter
package com.example.common; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.Resource; import com.example.customer.services.CustomerService; public class App { public static void main( String[] args ) { ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"}); CustomerService cust = (CustomerService)appContext.getBean("customerService"); Resource resource = cust.getResource("classpath:com/example/common/testing.txt"); try{ InputStream is = resource.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); }catch(IOException e){ e.printStackTrace(); } } }
Vous pouvez maintenant obtenir les ressources d'un bean.
Conclusion
Sans cette méthode getResource (), vous devrez gérer différentes ressources avec une solution différente, comme l'objet File pour la ressource du système de fichiers, l'objet URL pour la ressource URL. Spring a vraiment fait du bon travail avec cette méthodegetResource() super générique, cela nous fait vraiment gagner du temps pour gérer les ressources.
Télécharger le code source
Téléchargez-le -Spring-getResource-Example.zip