Afin de « configurer » printemps afin qu'il puisse vous fournit les instances des classes dont vous avez besoin vous êtes censé dire Spring ce que objets sont impliqués et comment le sont construits . Pour ce faire, vous pouvez utiliser un fichier de configuration XML ou par annotations
Dans le cas où vous prenez vous pouvez utiliser @Component
pour annoter la classe l'approche d'annotation (à mon humble avis une bien meilleure et plus simple). C'est comme dire à Spring: "Hé, je veux que vous sachiez que vous pourriez avoir besoin d'une instance de cette classe, peut-être parce que je la demande, peut-être parce que quelque chose que j'ai demandé en a besoin". Alors annoter une classe ce @Component
laissez printemps savoir qu'il existe
Il y a d'autres annotations qui font la même:
@Controller
(et @RestController
)
@Service
@Repository
Ils ont tous informé Spring que la classe est impliquée dans le contexte DI. Mais le aussi avoir un sens sémantique:
@Controller
= @Component
appartenant à couche de présentation
@Service
= @Component
appartenant au service/Utilisation couche Case
@Repository
= @Component
appartenant à la persistance couche
Vous pouvez trouver plus d'informations dans this question
Un service peut-il appeler les autres services?
Je ne vois aucun problème avec cela. Si l'un de vos services nécessite de faire certaines actions qui sont déjà effectuées par d'autres, vous voulez sûrement éviter la réplication de code. Tant que vous respectez la dépendance des couches d'architecture (ne jamais monter), tout ira bien.
À propos de ce que vous pouvez vérifier this article sur Architecture Clean
Votre question est trop large. Copie proposée: https://stackoverflow.com/questions/6827752/whats-the-difference-between-component-repository-service-annotations-in –