Maison  >  Article  >  Java  >  Quels sont les points de connaissance des annotations SpringBoot ?

Quels sont les points de connaissance des annotations SpringBoot ?

WBOY
WBOYavant
2023-05-15 16:40:06860parcourir

1. Liste des annotations

@SpringBootApplication : contient les annotations @ComponentScan, @Configuration et @EnableAutoConfiguration. Parmi eux, @ComponentScan permet à Spring Boot d'analyser la classe Configuration et de l'ajouter au contexte du programme.

@Configuration est équivalent au fichier de configuration XML de Spring ; la sécurité des types peut être vérifiée à l'aide du code Java.

@EnableAutoConfiguration configuration automatique.

L'analyse des composants @ComponentScan peut découvrir et assembler automatiquement certains beans.

@Component peut être utilisé avec CommandLineRunner pour effectuer certaines tâches de base après le démarrage du programme.

L'annotation @RestController est une collection de @Controller et @ResponseBody, indiquant qu'il s'agit d'un bean contrôleur, et la valeur de retour de la fonction est directement renseignée dans le corps de la réponse HTTP, qui est un contrôleur de style REST.

@Importation automatique Autowired.

@PathVariable obtient les paramètres.

@JsonBackReference résout le problème des liens externes imbriqués.

@RepositoryRestResourcepublic est utilisé avec spring-boot-starter-data-rest.

2. Explication détaillée des annotations

@SpringBootApplication : Déclare que Spring Boot configure automatiquement le programme nécessaire. Cette configuration est équivalente à : @Configuration, @EnableAutoConfiguration et @ComponentScan trois configurations.

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // identique à

@Configuration

@EnableAutoConfiguration

@ComponentScan public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@ResponseBody : Indique que le résultat de retour de cette méthode est directement écrit dans le corps de la réponse HTTP, généralement obtenu de manière asynchrone Utilisé lorsque les données sont utilisées pour créer des API RESTful. Après avoir utilisé @RequestMapping, la valeur de retour est généralement analysée comme un chemin de saut. Après avoir ajouté @responsebody, le résultat renvoyé ne sera pas analysé comme un chemin de saut, mais sera écrit directement dans le corps de la réponse HTTP. Par exemple, si vous obtenez des données json de manière asynchrone et ajoutez @responsebody, les données json seront renvoyées directement. Cette annotation est généralement utilisée conjointement avec @RequestMapping. Exemple de code :

@RequestMapping("/test")@ResponseBodypublic String test(){ return "ok";}

@Controller : utilisé pour définir la classe du contrôleur dans le projet Spring, le contrôleur est responsable de l'envoi des utilisateurs. La requête URL est transmise à l'interface de service correspondante (couche de service). Généralement, cette annotation se trouve dans la classe et la méthode doit généralement être accompagnée de l'annotation @RequestMapping. Exemple de code :

@Controller@RequestMapping("/demoInfo") public class DemoController {

@Autowired private DemoInfoService demoInfoService

@RequestMapping("/hello") public String hello(Map map){ System .out.println("DemoController.hello()");

map.put("hello","from TemplateController.helloHtml"

);

//Utilisera le modèle hello.html ou hello.ftl rendu Display.

return"/hello";

}

}

@RestController : utilisé pour annoter les composants de la couche de contrôle (tels que les actions dans les struts), une collection de @ResponseBody et @Controller. Exemple de code :

import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping("/demoInfo2")publicclass DemoController2 {

@RequestMapping(" /test") public String test(){ return "ok";

}

}

@RequestMapping : fournit des informations de routage et est responsable du mappage des URL vers des fonctions spécifiques du contrôleur.

@EnableAutoConfiguration : configuration automatique de Spring Boot (configuration automatique) : essayez de configurer automatiquement votre application Spring en fonction des dépendances jar que vous avez ajoutées. Par exemple, si HSQLDB existe sur votre chemin de classe et que vous n'avez configuré manuellement aucun beans de connexion à la base de données, nous configurerons automatiquement une base de données en mémoire. Vous pouvez ajouter l'annotation @EnableAutoConfiguration ou @SpringBootApplication à une classe @Configuration pour sélectionner la configuration automatique. . Si vous constatez que des classes de configuration automatique spécifiques sont appliquées, vous pouvez utiliser l'attribut d'exclusion de l'annotation @EnableAutoConfiguration pour les désactiver

@ComponentScan : Cela signifie que la classe sera automatiquement découverte et analysée, si les classes sont annotées avec @. Les composants, @Controller, @Service, etc. sont analysés et enregistrés en tant que beans, tous les composants Spring, y compris les classes @Configuration, peuvent être automatiquement collectés. Nous utilisons souvent l'annotation @ComponentScan pour rechercher des beans et les combiner avec l'importation d'annotations @Autowired. . Tous les composants Spring peuvent être collectés automatiquement, y compris la classe @Configuration. Nous utilisons souvent l'annotation @ComponentScan pour rechercher des beans et les importer avec l'annotation @Autowired. S'il n'y a pas de configuration, Spring Boot analysera le package et le sous-. package où se trouve la classe de démarrage Classes annotées avec @Service, @Repository etc.

.

@Configuration : équivalent au fichier de configuration XML traditionnel. Si certaines bibliothèques tierces doivent utiliser des fichiers XML, il est recommandé de toujours utiliser la classe @Configuration comme classe de configuration principale du projet. Vous pouvez utiliser l'annotation @ImportResource. pour charger le fichier de configuration XML.

@Import : utilisé pour importer d'autres classes de configuration.

@ImportResource : utilisé pour charger les fichiers de configuration XML.

@Autowired : importer automatiquement les beans dépendants

@Service : généralement utilisé pour modifier les composants de la couche de service

@Repository : l'utilisation de l'annotation @Repository peut garantir que DAO ou les référentiels fournissent une traduction d'exception. La classe DAO ou les référentiels modifiés par. cette annotation sera découverte et configurée par ComponentScan, et il n'est pas nécessaire de fournir des éléments de configuration XML pour celles-ci.

@Bean : Les méthodes marquées avec @Bean sont équivalentes aux beans configurés en XML.

@Value : Injectez la valeur de la propriété configurée par Spring boot application.properties. Exemple de code :

@Value(value = "#{message}")private String message ;

@Inject : équivalent au @Autowired par défaut, sauf qu'il n'y a pas d'attribut obligatoire

@Component : fait généralement référence aux composants ; , lorsque les composants Lorsqu'il est difficile à classer, nous pouvons utiliser cette annotation pour le marquer.

@Bean : Equivalent à XML, placé au-dessus de la méthode au lieu de la classe, ce qui signifie générer un bean et le remettre à Spring pour la gestion.

@AutoWired : importez automatiquement les beans dépendants. méthode byType. Utilisez les beans configurés pour terminer l'assemblage des propriétés et des méthodes. Il peut annoter les variables, les méthodes et les constructeurs des membres de la classe pour terminer l'assemblage automatique. Lorsque (required=false) est ajouté, aucune erreur ne sera signalée même si le bean est introuvable.

@Qualifier : Lorsqu'il existe plusieurs beans du même type, vous pouvez utiliser @Qualifier("name") pour spécifier. Utilisé avec @Autowired. En plus de pouvoir injecter par nom, le descripteur qualifié @Qualifier peut fournir un contrôle plus précis sur la façon de sélectionner les candidats. L'utilisation spécifique est la suivante :

@Autowired@Qualifier(value = "demoInfoService")private DemoInfoService. demoInfoService;

@ Resource(name="name",type="type") : S'il n'y a pas de contenu entre parenthèses, la valeur par défaut est byName. Faites des choses similaires avec @Autowired.

3. Annotations JPA

@Entity : @Table(name="") : Indique qu'il s'agit d'une classe d'entité. Généralement utilisées en jpa, ces deux annotations sont généralement utilisées ensemble, mais si le nom de la table et le nom de la classe d'entité sont identiques, @Table peut être omis

@MappedSuperClass : utilisé sur les entités déterminées comme étant des classes parentes. Les sous-classes peuvent hériter des propriétés de la classe parent.

@NoRepositoryBean : Généralement utilisé comme référentiel de la classe parent. Avec cette annotation, spring n'instanciera pas le référentiel.

@Column : Si le nom du champ est le même que le nom de la colonne, il peut être omis.

@Id : Indique que cet attribut est la clé primaire.

@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = « repair_seq ») : Indique que la stratégie de génération de clé primaire est séquentielle (peut être Auto, IDENTITY, native, etc., Auto signifie qu'elle peut basculer entre plusieurs bases de données), et le nom de la séquence spécifiée est repair_seq.

@SequenceGeneretor(name = « repair_seq », séquenceName = « seq_repair », allocationSize = 1) : name est le nom de la séquence pour une utilisation facile, séquenceName est le nom de la séquence de la base de données, et les deux noms peuvent être cohérents.

@Transient : indique que cet attribut n'est pas un mappage vers un champ dans une table de base de données et que le framework ORM ignorera cet attribut. Si un attribut n'est pas un mappage de champ d'une table de base de données, il doit être marqué comme @Transient. Sinon, le framework ORM utilise par défaut l'annotation @Basic. @Basic(fetch=FetchType.LAZY) : La balise peut spécifier la méthode de chargement des attributs d'entité

@JsonIgnore : La fonction consiste à ignorer certains attributs du bean Java pendant la sérialisation json, et la sérialisation et la désérialisation sont affectées.

@JoinColumn(name="loginId") : One-to-one : une clé étrangère dans cette table pointant vers une autre table. Un-à-plusieurs : une clé étrangère provenant d'une autre table pointant vers cette table.

@OneToOne, @OneToMany, @ManyToOne : correspondent à un-à-un, un-à-plusieurs et plusieurs-à-un dans le fichier de configuration de mise en veille prolongée.

4. Notes relatives à SpringMVC

@RequestMapping : @RequestMapping("/path") signifie que le contrôleur gère toutes les requêtes URL "/path". RequestMapping est une annotation utilisée pour gérer le mappage d'adresses de requête, qui peut être utilisée sur des classes ou des méthodes. Utilisé sur une classe, cela signifie que toutes les méthodes de la classe qui répondent aux requêtes utilisent cette adresse comme chemin parent. Cette annotation possède six attributs :

params : Spécifie que la requête doit contenir certaines valeurs de paramètres avant de pouvoir être traitée par cette méthode. en-têtes : la requête spécifiée doit contenir certaines valeurs d'en-tête spécifiées pour que cette méthode puisse traiter la requête. value : spécifiez l'adresse réelle de la demande, l'adresse spécifiée peut être une méthode en mode modèle URI : spécifiez le type de méthode de la demande, GET, POST, PUT, DELETE, etc. consumer : spécifiez le type de contenu de soumission (Content-Type ) pour le traitement de la demande, tel que application/ json, text/html;produces : Spécifie le type de contenu à renvoyer uniquement lorsque le type (Accepter) dans l'en-tête de la demande contient le type spécifié

@RequestParam. : Utilisé devant les paramètres de la méthode. @RequestParamString a =request.getParameter("a").

@PathVariable : variable de chemin. Par exemple,

RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //faire quelque chose;}

Les paramètres doivent être les mêmes que les noms entre accolades.

5. Gestion globale des exceptions

@ControllerAdvice : contient @Component. peuvent être numérisés. Gérez les exceptions de manière uniforme.

@ExceptionHandler (Exception.class) : utilisé sur une méthode pour indiquer que la méthode suivante sera exécutée lors de la rencontre de cette exception.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer