Ինտերֆեյս ResourcePatternResolver
-ը ընդլայնում է ResourceLoader
ինտերֆեյսը, որը սահմանում է տեղակայման շաբլոնի լուծման ռազմավարություն (օրինակ՝ Ant ոճի ուղու շաբլոն) դեպի Resource
օբյեկտներ:
public interface ResourcePatternResolver extends ResourceLoader {
String CLASSPATH_ALL_URL_PREFIX = "classpath*:";
Resource[] getResources(String locationPattern) throws IOException;
}
Ինչպես երևում է վերևում, այս ինտերֆեյսը նաև սահմանում է հատուկ ռեսուրսային նախածանցը classpath*:
բոլոր համընկնող ռեսուրսների համար classpath-ից: Նկատի ունեցեք, որ այս դեպքում ռեսուրսի տեղակայումը պետք է լինի ուղի առանց placeholder-ների՝ օրինակ, classpath*:/config/beans.xml
: classpath-ում կան JAR ֆայլեր կամ տարբեր բնղուհներ, որոնք կարող են ունենա մի քանի ֆայլեր նույնը ուղիով և նույնը անվանումով:
Փոխանցված ResourceLoader
-ը (օրինակ՝ տրամադրված ResourceLoaderAware
սեմանտիկայով) կարող է ստուգվել, եթե այն իրականացրե՞լ է այս ընդլայնված ինտերֆեյսը:
PathMatchingResourcePatternResolver
—ը ինքնուրույն իրականացում է, որը կարող է օգտագործվել դրսում ApplicationContext
-ից և օգտագործվում է նաև ResourceArrayPropertyEditor
-ում, որպեսզի լրացնի Resource[]
պրոպերտիները: PathMatchingResourcePatternResolver
կարող է լուծել նշված ռեսուրսի տեղակայման ուղին դեպի մեկ կամ ավելի համապատասխանող օբյեկտներ Resource.
Սկզբնական ուղին կարող է լինել պարզ ուղի, որը ունի "մեկն ընդդիմանորդ" կապ Resource
-ի հետ կամ կարող է պարունակել հատուկ նախածանցը classpath*
: և/կամ ներքին ստանդարտ արտահայտություններ Ant ոճով (համապատասխանեցված օգտագործելու org.springframework.util.AntPathMatcher
օգտակար ծրագրաշարով Spring-ում): Երկուսն էլ իրականում հանդիսանում են wildcard-ներ:
ResourceLoader
-ը լռելյայն ցանկացած ստանդարտ ApplicationContext
-ում փաստորեն PathMatchingResourcePatternResolver
-ի օրինակ է, որը իրականացնում է ResourcePatternResolver
ինտերֆեյսը: Նույնը ճշմարիտ է նաև ApplicationContext
-ի ինքնին օրինակին, որը նույնպես իրականացնում է ResourcePatternResolver
ինտերֆեյսը և հանձնարարում է իր ստանդարտ PathMatchingResourcePatternResolver
-ին:
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ