Slava S
в общем случае правильно с final
Т.е. лучше сделать конфиг, там метод, на него @Bean и возвращать new RecipeService(). Тогда и с final заработает.
Но я вот не понимаю, а что ему мешает заработать с final и без этого? Ну, оно же с конструктором работает. Т.е. спринг бут ему дает экземпляр класса-то. Почему он не может быть final?