The Spring Framework provides several specializations of the generic ``++@Component++`` stereotype annotation which better express the programmer’s intent. Using them should be preferred. == Noncompliant Code Example ---- @Component // Noncompliant; class name suggests it's a @Service public class CustomerServiceImpl { // ... } @Component // Noncompliant; class name suggests it's a @Repository public class ProductRepository { // ... } @Component // Noncompliant; class name suggests it's a @Controller or @RestController public class FooBarRestController { // ... } ---- == Compliant Solution ---- @Service // Compliant public class CustomerServiceImpl { // ... } @Repository // Compliant public class ProductRepository { // ... } @RestController // Compliant public class FooBarRestController { // ... } @Component // Compliant public class SomeOtherComponent { // ... } ---- == See * https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-stereotype-annotations[Spring documentation - @Component and Further Stereotype Annotations] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]