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.
Noncompliant code example
@Scope("prototype") // Noncompliant
@Controller
public class HelloWorld {
Compliant solution
@Controller
public class HelloWorld {