Les annotations les plus et les plus couramment utilisées dans Spring Boot

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  équivaut au fichier de configuration XML de spring; le code Java peut être utilisé pour vérifier la sécurité du type.

@EnableAutoConfiguration  configuration automatique.

L'analyse des  composants @ComponentScan permet de découvrir et d'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.

@Autowired est  automatiquement importé.

@PathVariable  récupère les paramètres.

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

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

2. Explication détaillée des annotations

@SpringBootApplication:  déclare que Spring Boot configurera automatiquement le programme si nécessaire. Cette configuration équivaut à: @Configuration, @EnableAutoConfiguration et @ComponentScan trois configurations.

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

@SpringBootApplication // same as @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, qui est généralement utilisé lors de l'obtention de données de manière asynchrone, et est utilisé pour créer une 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 de retour ne sera pas analysé comme un chemin de saut, mais directement écrit dans le corps de la réponse HTTP.

Par exemple, pour obtenir des données json de manière asynchrone, après avoir ajouté @responsebody, les données json seront renvoyées directement. Cette annotation est généralement utilisée avec @RequestMapping.

Exemple de code:

@RequestMapping(“/test”)
@ResponseBody
public String test(){
    return”ok”;
}

@Controller:  Utilisé pour définir la classe du contrôleur. Dans le projet Spring, le contrôleur est responsable de la transmission de la requête URL envoyée par l'utilisateur à l'interface de service correspondante (couche de service). En général, cette annotation est dans la classe, et généralement le doit être annotée avec @RequestMapping.

Exemple de code:

@Controller
@RequestMapping(“/demoInfo”)
publicclass DemoController {
    @Autowired
    private DemoInfoService demoInfoService;

    @RequestMapping("/hello")
    public String hello(Map<String,Object> map){
        System.out.println("DemoController.hello()");
        map.put("hello","from TemplateController.helloHtml");
        //会使用hello.html或者hello.ftl模板进行渲染显示.
        return"/hello";
    }
}

@RestController:  utilisé pour annoter les composants de la couche de contrôle (tels que les actions dans les entretoises), 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, responsable du mappage des URL à des fonctions spécifiques dans le contrôleur.

@EnableAutoConfiguration:  configuration automatique de Spring Boot: essayez de configurer automatiquement votre application Spring en fonction des dépendances jar que vous ajoutez. Par exemple, si HSQLDB existe sur votre chemin de classe et que vous n'avez pas configuré manuellement de beans de connexion à la base de données, nous configurerons automatiquement une base de données en mémoire ".

Vous pouvez ajouter des annotations @EnableAutoConfiguration ou @SpringBootApplication à une classe @Configuration pour sélectionner la configuration automatique. Si vous constatez que des classes de configuration automatique spécifiques que vous ne souhaitez pas sont appliquées, vous pouvez les désactiver à l'aide de l'attribut d'exclusion de l'annotation @EnableAutoConfiguration.

@ComponentScan:  indique que cette classe découvre automatiquement les composants d'analyse. La compréhension personnelle équivaut à cela si vous recherchez des classes annotées avec @Component, @Controller, @Service, etc., et les enregistrez en tant que Beans, vous pouvez collecter automatiquement tous les composants Spring, y compris les classes @Configuration.

Nous utilisons souvent l'annotation @ComponentScan pour rechercher des beans et les importer en conjonction avec l'annotation @Autowired. Tous les composants Spring peuvent être collectés automatiquement, y compris les classes @Configuration. Nous utilisons souvent l'annotation @ComponentScan pour rechercher des beans et les importer en conjonction avec l'annotation @Autowired.

S'il n'y a pas de configuration, Spring Boot analysera le package où se trouve la classe de démarrage et les classes sous les sous-packages avec @Service, @Repository et d'autres annotations.

@Configuration:  équivaut au fichier de configuration xml traditionnel. Si certaines bibliothèques tierces doivent utiliser le fichier xml, il est recommandé de continuer à utiliser la classe @Configuration comme classe de configuration principale du projet - vous pouvez utiliser @ Annotation ImportResource pour charger le fichier de configuration xml.

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

@ImportResource:  utilisé pour charger le fichier de configuration xml.

@Autowired:  importer automatiquement les beans dépendants

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

@Repository: l'  utilisation de l'annotation @Repository peut garantir que DAO ou les référentiels fournissent la traduction des exceptions. La classe DAO ou les référentiels modifiée par cette annotation sera découverte et configurée par ComponetScan, et il n'est pas nécessaire de leur fournir des éléments de configuration XML.

@Bean: l'  annotation des méthodes avec @Bean équivaut aux beans configurés en XML.

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

Exemple de code:

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

@Inject:  équivalent à @Autowired par défaut, mais aucun attribut n'est requis;

@Component: fait  référence aux composants en général. Nous pouvons utiliser cette annotation pour annoter lorsque les composants ne sont pas facilement classés.

@Bean:  équivalent à XML, placé au-dessus de la méthode, pas de la classe, ce qui signifie qu'un bean est généré et géré par spring.

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

@Qualifier:  Lorsqu'il y a plusieurs beans du même type, vous pouvez utiliser @Qualifier ("nom") pour spécifier. Utilisé en conjonction avec @Autowired. Le descripteur qualifié @Qualifier peut non seulement être injecté en fonction du nom, mais peut également être utilisé pour un contrôle plus précis de la sélection des candidats. Son utilisation spécifique est la suivante:

@Autowired
@Qualifier(value = “demoInfoService”)
private DemoInfoService demoInfoService;

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

Trois, annotation JPA

@Entity:  @Table (name = ""):  indique qu'il s'agit d'une classe d'entité. Généralement utilisées dans 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é  pour déterminer l'entité qui est la classe parente. Les propriétés de la classe parente peuvent être héritées par des sous-classes.

@NoRepositoryBean:  généralement utilisé comme référentiel de la classe parente. 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 l'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équence (elle peut être Auto, IDENTITY, native, etc., Auto signifie qu'elle peut être basculée entre plusieurs bases de données), et le nom de la séquence spécifiée est repair_seq.

@SequenceGeneretor (name = "repair_seq", sequenceName = "seq_repair", allocationSize = 1):  name est le nom de la séquence à utiliser, sequenceName est le nom de la séquence de la base de données et les deux noms peuvent être identiques.

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

@JsonIgnore: La  fonction est d'ignorer certaines propriétés du bean Java lorsque la sérialisation, la sérialisation et la désérialisation json sont affectées.

@JoinColumn (name = ”loginId”):  One-to-one: Une clé étrangère dans cette table qui pointe vers une autre table. Un-à-plusieurs: une autre table pointe vers la clé étrangère de cette table.

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

Quatre solutions liées à SpringMVC

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

  • params: spécifie que certaines valeurs de paramètres doivent être incluses dans la demande avant que la méthode ne soit traitée.
  • headers: la demande spécifiée doit contenir certaines valeurs d'en-tête spécifiées pour que la méthode puisse traiter la demande.
  • valeur: spécifiez l'adresse réelle de la demande, l'adresse spécifiée peut être en mode modèle URI
  • méthode: spécifiez le type de méthode de la requête, GET, POST, PUT, DELETE, etc.
  • consomme: spécifiez le type de contenu (Content-Type) pour le traitement de la demande, tel que application / json, text / html;
  • produit: spécifie le type de contenu à renvoyer et renvoie uniquement lorsque le type (Accept) dans l'en-tête de la demande contient le type spécifié

@RequestParam: Utilisé  devant les paramètres de méthode.

@RequestParam Chaîne a = request.getParameter («a»)。

@PathVariable:  variable de chemin. Tel que

RequestMapping(“user/get/mac/{macAddress}”)
public String getByMacAddress(@PathVariable String macAddress){
    //do something;
}

Le paramètre doit être le même que le nom entre accolades.

Cinq, gestion globale des exceptions

@ControllerAdvice:  contient @Component. Peut être scanné. Gérez les exceptions de manière uniforme.

@ExceptionHandler (Exception.class): Utilisé  sur la méthode pour indiquer que la méthode suivante sera exécutée lorsque cette exception est rencontrée.

Je suppose que tu aimes

Origine blog.csdn.net/baidu_39322753/article/details/104657960
conseillé
Classement