spring boot controller service best practices