Innanzitutto in Spring Boot non è per forza obbligatorio creare esplicitamente il bean del MessageSource. C'è una auto-configuration che si può sfruttare, ed è documentata qui: https://docs.spring.io/spring-boot/r...alization.html
Ovvero, se si mettono dei file alla "radice" in classpath (src/main/resources/) con nome messages.properties e le varianti delle lingue (es. messages_en.properties, messages_it.properties ecc...), Spring Boot è in grado di autoconfigurare il MessageSource da solo.
Se fai qualunque altra cosa di diverso, ovviamente è tutto a tuo carico, come appunto hai fatto.
Riguardo il passaggio della lingua nel controller, la possibilità più semplice è quella di mappare direttamente il java.util.Locale nel path param, che è proprio ciò che poi serve ai getMessage del MessageSource.
Ovvero:
codice:@GetMapping(path = "/{lingua}", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.OK) public String index(@PathVariable("lingua") Locale lingua) {
Spring Boot è in grado di mappare es. /en_US nel java.util.Locale corrispondente. Nota che è bene mettere sempre il value alla annotation, @PathVariable("lingua") in quanto la esposizione dei nomi dei parametri è possibile ma solo sotto certe condizioni.
Se invece volessi mappare tu dei nomi "parlanti", es. /inglese, ovviamente la transcodifica è tutta a tuo carico.