Nemožno nájsť Spring NamespaceHandler pre XML Schema Namespace
Práve som oznámil nový kurz Learn Spring Security vrátane úplného materiálu zameraného na nový zásobník OAuth2 vo Spring Security 5:
>> SKONTROLUJTE KURZ1. Problém
Tento článok bude pojednávať o jednom z najbežnejších problémov s konfiguráciou na jar - obslužný program menného priestoru pre jeden z jarných menných priestorov nebol nájdený. Väčšinou to znamená, že v triede chýba jedna konkrétna jarná nádoba - poďme si teda predstaviť, čo by tieto chýbajúce schémy mohli byť a aká je chýbajúca závislosť pre každú z nich.
2. //www.springframework.org/schema/security
Priestor názvov zabezpečenia, ktorý nie je k dispozícii, je zďaleka najbežnejším problémom v praxi:
Čo vedie k nasledujúcej výnimke:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfiguračný problém: Nie je možné nájsť Spring NamespaceHandler pre priestor názvov schémy XML [//www.springframework.org/schema/security] Neoprávnený zdroj: prostriedok cesty k triede [securityConfig.xml]
Riešenie je priame - spring-security-config v triede projektu chýba závislosť:
org.springframework.security spring-security-config 3.2.5.RELEASE
Týmto sa v tomto prípade nastaví správny obslužný program menného priestoru SecurityNamespaceHandler - na triednej ceste a pripravený analyzovať prvky v bezpečnosť menný priestor.
Kompletnú konfiguráciu Maven pre úplné nastavenie Spring Security nájdete v mojom predchádzajúcom návode Maven.
3. //www.springframework.org/schema/aop
Rovnaký problém nastáva aj pri používaní the aop menný priestor bez potrebnej knižnice aop jar na triednej ceste:
Presná výnimka:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfiguračný problém: Nie je možné nájsť Spring NamespaceHandler pre priestor názvov schémy XML [//www.springframework.org/schema/aop] Zdroj, ktorý porušuje pravidlá: Zdroj ServletContext [/ WEB-INF / webConfig. xml]
Riešenie je podobné - jar-aop jar musí byť pridaný do triedy projektu:
org.springframework spring-aop 4.1.0.RELEASE
V takom prípade AopNamespaceHandler sa po pridaní novej závislosti bude nachádzať na ceste ku triede.
4. //www.springframework.org/schema/tx
Použitím menný priestor transakcie - malý, ale veľmi užitočný priestor mien na konfiguráciu transakčnej sémantiky:
bude mať za následok tiež výnimku, ak sa na nádobe nenachádza správny džbán:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfiguračný problém: Nie je možné nájsť Spring NamespaceHandler pre priestor názvov schémy XML [//www.springframework.org/schema/tx] Neoprávnený zdroj: prostriedok cesty k triede [daoConfig.xml]
Chýba tu závislosť jar-tx:
org.springframework spring-tx 4.1.0.RELEASE
Teraz, správne NamspaceHandler - menovite TxNamespaceHandler - bude prítomný v triede, ktorá umožňuje deklaratívnu správu transakcií s XML aj anotáciami.
5. //www.springframework.org/schema/mvc
Vpred do the mvc menný priestor:
Chýbajúca závislosť povedie k nasledujúcej výnimke:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfiguračný problém: Nie je možné nájsť Spring NamespaceHandler pre priestor názvov schémy XML [//www.springframework.org/schema/mvc] Neoprávnený zdroj: prostriedok cesty k triede [webConfig.xml]
V tomto prípade chýba závislosť jar-mvc:
org.springframework spring-webmvc 4.1.0.RELEASE
Pridanie tohto do pom.xml pridá MvcNamespaceHandler na cestu ku triede - umožňuje projektu konfigurovať sémantiku MVC pomocou menného priestoru.
6. Záver
Nakoniec, ak na správu webového servera a nasadenie používate Eclipse - uistite sa, že je správne nakonfigurovaná časť Deployment Assembly v projekte - teda, že závislosti Maven sú v skutočnosti v čase nasadenia na ceste k triede zahrnuté.
V tomto výučbe sa diskutovalo o obvyklých podozrivých z problému „Nemožno nájsť Spring NamespaceHandler pre priestor názvov schémy XML“ a poskytli sme riešenia pre každý výskyt.
Bezpečnostné dno