Загрузчик ресурсов Spring предоставляет очень общий метод getResource() для получения таких ресурсов, как (текстовый файл, медиафайл, файл изображения…) из файловой системы, пути к классу или URL. Вы можете получить метод getResource() из контекста приложения.
Вот пример, показывающий, как использовать getResource() для загрузки текстового файла из
1. Файловая система
Resource resource = appContext.getResource("file:c:\\testing.txt");
2. Путь к URL-адресу
Resource resource = appContext.getResource("url:http://www.yourdomain.com/testing.txt");
3. Путь к классу
Resource resource = appContext.getResource("classpath:com/mkyong/common/testing.txt");
Вам просто нужно указать местоположение ресурса, а пружина обработает все остальное и вернет вам объект ресурса.
Полный пример с методом getResource()
.
package com.mkyong.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/mkyong/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(); } } }
Загрузчик бобовых ресурсов (resourceloaderaware)
Поскольку компонент не имеет доступа к контексту приложения, как компонент может получить доступ к ресурсам? Обходным решением является реализация интерфейса ResourceLoaderAware и создание метода настройки для объекта ResourceLoader . Весна загрузит загрузчик ресурсов в ваш боб.
package com.mkyong.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); } }
Файл конфигурации компонента
Запустите его
package com.mkyong.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.mkyong.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/mkyong/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(); } } }
Теперь вы можете получать ресурсы из боба.
Вывод
Без этого метода getResource() вам придется иметь дело с разными ресурсами с разными решениями, такими как объект файла для ресурса файловой системы, объект URL для ресурса URL. Весна действительно проделала хорошую работу с этим супер универсальным методом getResource() , он действительно экономит наше время на работе с ресурсами.
Скачать Исходный Код
Оригинал: “https://mkyong.com/spring/spring-resource-loader-with-getresource-example/”