Con i template-engine non si deve usare @ResponseBody in un metodo di controller. Il @ResponseBody si usa quando si deve fare il binding di un oggetto verso XML/JSON sfruttando JAXB, Jackson o altro.
Con i template-engine si devono impostare i dati in un "model" e poi indicare quale è il nome "logico" della view. Ci sono vari modi per farlo, alcuni più vecchi, altri più recenti. Quello che uso di solito io è ricevere nel metodo un org.springframework.ui.Model, impostarlo con dei dati e poi restituire il nome della vista.
Con Thymeleaf il prefisso "classpath:/templates/" e il suffisso ".html" sono già definiti per default (a meno di volerli cambiare esplicitamente nella configuration). Quindi il nome "logico" della view viene messo in mezzo tra prefisso e suffisso.
Se la pagina è nelle risorse in src/main/resources/templates/index.html allora il nome logico è solo "index" e basta (senza path e senza estensione).
Guarda il controller nel mio progetto demo spring-boot3-thymeleaf-basic-demo
P.S. non usare le versioni SNAPSHOT di Spring. Potrebbero darti problemi. Ed eviti anche di dover usare i repo specifici di Spring (le milestone/snapshot infatti NON sono sul Maven Central).