Vlastné overenie MessageSource v Spring Boot

1. Prehľad

MessageSource je výkonná funkcia dostupná v jarných aplikáciách. To pomáha vývojárom aplikácií zvládnuť rôzne zložité scenáre pri písaní ďalších kódov, ako je napríklad konfigurácia špecifická pre dané prostredie, internacionalizácia alebo konfigurovateľné hodnoty.

Ďalším scenárom by mohla byť úprava predvolených overovacích správ na viac užívateľsky príjemnejších / vlastných správ.

V tomto návode uvidíme, ako nakonfigurovať a spravovať vlastné overenie MessageSource v aplikácii pomocou Spring Boot.

2. Maven závislosti

Začnime s pridaním potrebných závislostí Maven:

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-validácia 

Najnovšie verzie týchto knižníc nájdete na serveri Maven Central.

3. Príklad vlastnej overovacej správy

Uvažujme o scenári, kde musíme vyvinúť aplikáciu, ktorá podporuje viac jazykov. Ak používateľ neposkytne správne podrobnosti ako vstup, chceli by sme zobraziť chybové správy podľa miestneho nastavenia používateľa.

Zoberme si príklad fazule prihlasovacieho formulára:

verejná trieda LoginForm {@NotEmpty (message = "{email.notempty}") @Email private String email; @NotNull súkromné ​​heslo reťazca; // štandardný getter a setter}

Tu sme pridali obmedzenia overovania, ktoré overujú, či e-mail nie je poskytnutý vôbec alebo je poskytnutý, ale nedodržiava štandardný štýl e-mailovej adresy.

Ak chcete zobraziť vlastnú správu a správu špecifickú pre miestne nastavenie, môžeme poskytnúť zástupný symbol, ako je uvedené pre @Nie prázdny anotácia.

The email.notempty vlastnosť bude vyriešená zo súborov vlastností MessageSource konfigurácia.

4. Definovanie MessageSource Bean

Kontext aplikácie deleguje rozlíšenie správy na fazuľu s presným názvom messageSource.

ReloadableResourceBundleMessageSource je najbežnejšia MessageSource implementácia, ktorá rieši správy z balíkov zdrojov pre rôzne miestne nastavenia:

@Bean public MessageSource messageSource () {ReloadableResourceBundleMessageSource messageSource = nový ReloadableResourceBundleMessageSource (); messageSource.setBasename ("classpath: messages"); messageSource.setDefaultEncoding ("UTF-8"); návrat messageSource; }

Tu je dôležité poskytnúť basename pretože názvy súborov špecifických pre miestne nastavenie budú vyriešené na základe poskytnutého názvu.

5. Definovanie LocalValidatorFactoryBean

Ak chcete používať vlastné správy s menom v súbore vlastností, napríklad musíme definovať a LocalValidatorFactoryBean a zaregistrujte sa messageSource:

@Bean public LocalValidatorFactoryBean getValidator () {LocalValidatorFactoryBean bean = nový LocalValidatorFactoryBean (); bean.setValidationMessageSource (messageSource ()); spätná fazuľa; }

Upozorňujeme však, že ak by sme už predĺžili WebMvcConfigurerAdapter, aby sa zabránilo ignorovaniu vlastného validátora, museli by sme nastaviť validátor prepísaním getValidator () metóda z materskej triedy.

Teraz môžeme definovať správu vlastnosti ako:

email.notempty = ”

namiesto

„Javax.validation.constraints.NotEmpty.message =“

6. Definovanie súborov nehnuteľností

Posledným krokom je vytvorenie súboru vlastností v src / main / resources adresár s názvom uvedeným v zozname basename v kroku 4:

# messages.properties email.notempty = Zadajte platné ID e-mailu.

Tu môžeme spolu s tým využívať výhody internacionalizácie. Povedzme, že chceme zobrazovať správy pre francúzskeho používateľa v ich jazyku.

V takom prípade musíme pridať ešte jeden súbor vlastností s názvom messages_fr.properties na rovnakom mieste (nie sú potrebné žiadne zmeny kódu):

# messages_fr.properties email.notempty = Veřejné správy nie sú identifikovateľné.

7. Záver

V tomto článku sme sa zaoberali tým, ako je možné zmeniť predvolené overovacie správy bez úpravy kódu, ak je konfigurácia vopred vykonaná správne.

Spolu s tým môžeme tiež využiť podporu internacionalizácie, aby bola aplikácia užívateľsky príjemnejšia.

Celý zdrojový kód je ako vždy k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found