Merhaba değerli Java dostları,

Bugünkü yazımda Spring içerisinde mevcut basit; ama çok kullanışlı olduğunu düşündüğüm bir interface ve buna bağlı sınıfları tanıtmak istiyorum. Öncelikle Resource ile amacımız URL, file vb tabanlı kaynakları, girdileri okumak. Resource interface kendi içerisinde bazı metotlar barındırıyor. Bunlardan en önemli olduklarını düşündüklerim;

getInputStream(): Her çağrımında yeni bir nesne döndürür ve kaynak ile bağlantı kurulmasını sağlar. Kapatılması kütüphaneyi kullanan kişiye aittir.

exists(): Fiziki anlamda bağlantının olup olmadığını kontrol eden bir metot.

İlk bakışta Spring içerisindeki bu Resource interface ve bağlı sınıflar çok gerekli görülmeyebilir; ama standart bir yapı oluşması ve pratik kullanım adına bence gayet güzel ve basit bir yapı olmuş. Şimdi de implemente eden bazı sınıfların listesine bakalım.

  • BeanDefinitionResource
  • ClassPathResource
  • UrlResource
  • ByteArrayResource
  • FileSystemResource
  • ServletContextResource

Şimdi de ufak bir örnek yapalım.

 

package anajavatica.spring.resource;

import java.io.IOException;
import java.io.InputStream;

import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;

public class ResourceMain {

public static void main(String[] args) throws IOException {

ResourceMain.executeUrlResource();
ResourceMain.executeFileResource();

}

private static void executeUrlResource() throws IOException {
Resource urlResoource = new UrlResource(“http://www.farukbozan.com/feed”);
InputStream is = urlResoource.getInputStream();
if (urlResoource.exists()) {
if (is.available() <= 0)
System.out.println(“Nothing to read”);
else
System.out.println(urlResoource.getDescription());
is.close();
}
}

private static void executeFileResource() throws IOException {
Resource fileResource = new FileSystemResource(“fileResource.txt”);
InputStream is = fileResource.getInputStream();
if (fileResource.exists()) {
byte[] cache = new byte[50];
is.read(cache);
System.out.println(new String(cache));
is.close();
}
}

}

 

Aslında iki metot da birbirine çok yakın işler yapıyor tek farkları, birisi URL üzerinden http protokolü ile bağlantı kurarken diğeri direkt olarak file system üzerinden bir kaynağa erişiyor. Unutmayın bağlantıları kapatmak bizim sorumluluğumuzda.

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.