Spring ``++@Controller++``s, ``++@Service++``s, and ``++@Repository++``s have ``++singleton++`` scope by default, meaning only one instance of the class is ever instantiated in the application. Defining any other scope for one of these class types will result in needless churn as new instances are created and destroyed. In a busy web application, this could cause a significant amount of needless additional load on the server.
This rule raises an issue when the ``++@Scope++`` annotation is applied to a ``++@Controller++``, ``++@Service++``, or ``++@Repository++`` with any value but "singleton". ``++@Scope("singleton")++`` is redundant, but ignored.