@RunWith(SpringRunner.class)
Le rôle de @RunWith(SpringRunner.class) indique que la classe de test Test doit utiliser des classes injectées, telles que les classes injectées avec @Autowired. Ce n'est qu'avec @RunWith(SpringRunner.class) que ces classes peuvent être instanciées dans le conteneur Spring, et automatiquement l’injection peut faire effet.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
Généralement utilisé pour les tests d'intégration dans les applications Spring Boot. Il précise que le test doit être exécuté sur un port aléatoire, plutôt que sur le port par défaut de l'application. L'utilisation de cette annotation évite les problèmes liés aux tests en conflit avec l'application en cours d'exécution et garantit que les tests seront toujours exécutés dans une configuration de type production.
Plus précisément, @SpringBootTest
le contexte complet de l'application Spring est démarré dans le contexte du test JUnit, c'est-à-dire que l'application Spring Boot est démarrée et tous les beans sont chargés. webEnvironment
Les paramètres précisent dans quel type d'environnement Web le test doit être exécuté. RANDOM_PORT
Le mode signifie que l'application démarrera sur un port disponible aléatoire au lieu du port par défaut (généralement 8080). Cela permettra à plusieurs tests de s'exécuter en parallèle sans avoir à gérer manuellement les numéros de port ni à vous soucier des conflits de ports.
@LocalServerPort
Utilisé pour injecter le numéro de port sur lequel l'application actuelle s'exécute dans les tests Spring Boot. Il est généralement @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
utilisé avec une annotation spécifiant que le test doit être exécuté sur un port aléatoire.
Dans les tests d'intégration, le numéro de port de l'application est attribué au moment de l'exécution et peut changer car d'autres processus occupent le même port. À l'aide @LocalServerPort
d'annotations, vous pouvez obtenir par programme le numéro de port réel et l'utiliser à des fins de test. Par exemple, vous pouvez utiliser le numéro de port pour créer un client HTTP afin d'interagir avec votre application, ou le transmettre à d'autres composants de votre test qui doivent utiliser le numéro de port.
Voici un @LocalServerPort
exemple utilisant l'annotation :
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyIntegrationTest {
@LocalServerPort private int port;
// other test methods...
}
Dans cet exemple, port
la variable recevra le numéro de port sur lequel l'application actuelle s'exécute.
@Test
Si vous utilisez l'annotation @Test dans le framework JUnit pour marquer une méthode, la méthode sera automatiquement reconnue comme un scénario de test et appelée lors de l'exécution du test.
Par conséquent, que la méthode soit appelée ou non par l'instance, tant que le test JUnit est exécuté, la méthode sera automatiquement exécutée.
Il convient de noter que la méthode de test marquée de l'annotation @Test doit répondre à certaines exigences. Par exemple, la méthode doit avoir une visibilité publique (public), aucune valeur de retour (void), aucun paramètre et ne doit lever aucune exception, etc. Sinon, le test pourrait échouer.
@RestController
Dans le framework Spring, vous pouvez utiliser @Controller
des annotations pour marquer une classe en tant que contrôleur, puis définir des méthodes de gestion des requêtes HTTP dans cette classe. Lorsqu'une requête arrive, Spring MVC trouvera le contrôleur et la méthode correspondants en fonction de l'URL de la requête pour gérer la requête et renvoyer une réponse.
Si l'annotation est utilisée @ResponseBody
, cela signifie que le contenu de la réponse renvoyé par cette méthode n'est pas une vue, mais un objet ordinaire. Spring MVC convertira automatiquement cet objet au format JSON ou XML et l'écrira dans le corps de la réponse HTTP.
@RestController
L'annotation combine ces deux annotations. Il indique à Spring MVC que cette classe n'est pas seulement un contrôleur, mais doit également sérialiser la valeur de retour de la méthode au format JSON ou XML et la renvoyer à l'appelant en tant que corps de la réponse HTTP. C'est-à-dire que dans une @RestController
classe, toutes les méthodes seront déclarées comme , nous n'avons donc pas besoin d'ajouter d'annotations @ResponseBody
à chaque méthode .@ResponseBody
En bref, @RestController
cela peut nous aider à créer des services Web RESTful plus facilement.
@SpringBootApplication
@SpringBootApplication
est l'une des annotations principales de Spring Boot. Il s'agit d'une annotation combinée qui inclut les fonctions de trois annotations @Configuration
: , @EnableAutoConfiguration
et .@ComponentScan
@Configuration
L'annotation indique que cette classe est une classe de configuration et sera utilisée par le conteneur Spring IoC pour analyser et assembler des beans.@EnableAutoConfiguration
Les annotations peuvent configurer automatiquement les applications Spring Boot et configurer le démarrage en fonction des dépendances ajoutées au projet. Il utilise le mécanisme de configuration automatique de Spring Boot pour configurer automatiquement les applications Spring en fonction des classes et des packages jar existants dans le projet.@ComponentScan
L'annotation analysera toutes les classes du package spécifié et ses sous-packages pour rechercher et enregistrer les beans gérés par le conteneur. Cela permet à Spring Boot d'analyser automatiquement les contrôleurs, services et autres composants que nous avons écrits.
Par conséquent, nous devons généralement ajouter @SpringBootApplication
des annotations à la classe de démarrage du projet Spring Boot afin de terminer la configuration de base et le démarrage de l'application.
@Serveur
@Service
Il s'agit d'une annotation dans le framework Spring, généralement utilisée pour marquer une classe en tant que composant de couche de service. Cela indique que cette classe est un composant au niveau de la logique métier, utilisé pour gérer une logique métier spécifique, telle que le fonctionnement sur la base de données.
Dans les applications Spring, nous utilisons généralement @Service
des annotations pour marquer les composants de la couche de service. Lorsqu'une classe est @Service
décorée d'annotations, le conteneur Spring la reconnaît automatiquement comme un composant de couche de service et l'enregistre dans le conteneur pour la gestion.
Par exemple, dans le code suivant, MyService
la classe utilise @Service
des annotations :
code de copie Java
@Service public class MyService { private final SomeThirdPartyObject someThirdPartyObject; public MyService(SomeThirdPartyObject someThirdPartyObject) { this.someThirdPartyObject = someThirdPartyObject; } // ... }
Cela signifie que MyService
la classe peut être injectée en dépendance par d'autres composants, et que d'autres beans dont elle dépend peuvent être automatiquement injectés via l'annotation @Autowired
ou . @Resource
De plus, nous pouvons également MyService
définir certaines méthodes de logique métier dans la classe pour faciliter l'accès et le fonctionnement de la base de données ou d'autres ressources.
@Haricot
Dans Spring Boot, @Bean est une annotation utilisée pour enregistrer l'objet renvoyé par une méthode en tant que bean dans le contexte de l'application Spring. Les méthodes annotées avec @Bean doivent être déclarées dans une classe annotée avec @Configuration.
Lorsque le conteneur Spring démarre, il analyse toutes les classes marquées avec @Configuration et recherche les méthodes annotées @Bean. Le conteneur Spring appellera ces méthodes et enregistrera leurs valeurs de retour sous forme de beans. Ces beans peuvent être injectés dans d'autres composants de l'application à l'aide de l'annotation @Autowired.
Par conséquent, l'annotation @Bean fournit un moyen simple de définir et d'enregistrer des beans, permettant aux développeurs d'utiliser des implémentations personnalisées pour créer et gérer des objets dans les applications.
@Données
@Data
est une annotation fournie par Lombok, qui peut générer automatiquement le getter, le setter toString()
et equals()
les hashCode()
méthodes d'une classe, réduisant ainsi la quantité de code requise pour écrire ces méthodes à la main. Dans le même temps, il peut également générer des constructeurs à paramètres complets et des constructeurs à paramètres vides.
Les classes utilisant des annotations doivent ajouter des annotations @Data
sur la classe pour générer des constructeurs sans paramètre et paramétrés. De plus, vous devez ajouter des annotations et , qui généreront respectivement des méthodes et et .@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
toString()
equals()
hashCode()
@Data
En bref, vous pouvez facilement générer certains codes couramment utilisés à l'aide de , rendant le code plus concis et lisible et améliorant l'efficacité du développement.