JavaRush /Kurslar /All lectures for UZ purposes /ResourceLoader Interfeysi

ResourceLoader Interfeysi

All lectures for UZ purposes
Daraja, Dars
Mavjud

ResourceLoader interfeysi Resource nusxalarini qaytarishi (ya'ni yuklashi) mumkin bo'lgan obyektlar uchun mo'ljallangan. Quyidagi listingda ResourceLoader interfeysining ta'rifi ko'rsatilgan:

public interface ResourceLoader {
    Resource getResource(String location);
    ClassLoader getClassLoader();
}

Barcha dastur kontekstlari ResourceLoader interfeysini amalga oshiradi. Shuning uchun barcha dastur kontekstlaridan Resource nusxalarini olish uchun foydalanish mumkin.

Agar siz ma'lum bir dastur konteksti uchun getResource() ni chaqirsangiz va ko'rsatilgan joy yo'li ma'lum bir prefiksga ega bo'lmasa, siz qaytgan Resource turi aynan shu dastur kontekstiga mos keladi. Misol uchun, quyidagi kod parcha ClassPathXmlApplicationContext nusxasi uchun ishga tushirilgan deb faraz qilamiz:

Java
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
Kotlin
val template = ctx.getResource("some/resource/path/myTemplate.txt")

ClassPathXmlApplicationContext uchun bu kod ClassPathResource qaytaradi. Agar shu metod FileSystemXmlApplicationContext nusxasi uchun ishlatilganida, u FileSystemResource qaytargan bo'lardi. WebApplicationContext da esa u ServletContextResource qaytaradi. Shu tarzda, har bir kontekst uchun tegishli obyektlar qaytariladi.

Natijada, ma'lum bir dastur kontekstiga qarab resurslarni yuklash mumkin bo'ladi.

Boshqa tomondan, siz ClassPathResource ni dastur konteksti turidan qat'i nazar classpath: maxsus prefiksini ko'rsatib majburan ishlatishingiz mumkin, quyidagi misolda ko'rsatilgandek:

Java
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
Kotlin
val template = ctx.getResource("classpath:some/resource/path/myTemplate.txt")

Xuddi shunday, siz standart java.net.URL prefikslaridan birini ko'rsatib UrlResource ni majburan ishlatishingiz mumkin. Quyidagi misollarda file va https prefikslari ishlatiladi:

Java
Resource template = ctx.getResource("file:///some/resource/path/myTemplate.txt");
Kotlin
val template = ctx.getResource("file:///some/resource/path/myTemplate.txt")
Java
Resource template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt");
Kotlin
val template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt")

Quyidagi jadvalda String obyektlarini Resource obyektlariga aylantirish strategiyasi qisqacha bayon qilingan:

Jadval 10. Resurslarning satrlari
Prefiks Misol Izoh

classpath:

classpath:com/myapp/config.xml

Sinf yo'lidan yuklanadi.

file:

file:///data/config.xml

Fayl tizimidan URL sifatida yuklanadi.

https:

https://myserver/logo.png

URL sifatida yuklanadi.

(none)

/data/config.xml

ApplicationContext bazaviy interfeysiga bog'liq.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION