== Why is this an issue? 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 [source,java] ---- @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 [source,java] ---- @Service // Compliant public class CustomerServiceImpl { // ... } @Repository // Compliant public class ProductRepository { // ... } @RestController // Compliant public class FooBarRestController { // ... } @Component // Compliant public class SomeOtherComponent { // ... } ---- == Resources * 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) === Message Use @ instead of @Component ''' == Comments And Links (visible only on this page) === on 11 Dec 2019, 16:42:36 Tibor Blenessy wrote: Based on community suggestion \https://community.sonarsource.com/t/use-specializations-of-component-for-specific-use-cases/12379 endif::env-github,rspecator-view[]