Start here. This is the direct spoken answer to practice first.
Overview
Both are Spring MVC controllers; the difference is the default interpretation of return values.
@Controller marks a Spring MVC controller whose return values can represent views and models. @RestController combines @Controller with class-level @ResponseBody, so return values are normally written to the HTTP response through message converters. Both use the same request-mapping infrastructure. A String from a plain controller may name a view, while a String from a REST controller is normally response content.