Рубрики
Без рубрики

Весенний загрузчик ресурсов с getResource() пример

– Пружинный загрузчик ресурсов с getResource() пример

Загрузчик ресурсов 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/”