Spring Resource loader с примером getResource ()

Spring Resource loader с примером 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/example/common/testing.txt");

Вам просто нужно указать местоположение ресурса, а Spring обработает все остальное и вернет вам объект Resource.

Полный пример с методомgetResource().

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();
        }

    }
}

Загрузчик ресурсов Bean (ResourceLoaderAware)

Поскольку компонент не имеет доступа к контексту приложения, как компонент может получить доступ к ресурсам? Обходной путь - реализовать интерфейсResourceLoaderAware и создать метод установки для объектаResourceLoader. Spring добавит загрузчик ресурсов в ваш бин.

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);
    }
}

Файл конфигурации бина



   

Запустить его

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();
        }

    }
}

Теперь вы можете получить ресурсы из бобов.

Заключение

Без этого метода getResource () вам придется работать с разными ресурсами с разными решениями, такими как объект File для ресурса файловой системы, объект URL для ресурса URL. Spring действительно хорошо поработал с этим универсальным методомgetResource(), он действительно сэкономил нам время на работу с ресурсами.

Скачать исходный код