Análise detalhada das anotações do Spring Boot

 1. Tratamento de exceção global

@ControllerAdvice : Contém @Component. Pode ser verificado. Trate as exceções uniformemente.

@ExceptionHandler (Exception.class): usado no método para indicar que o método a seguir será executado quando essa exceção for encontrada.

2. Lista de anotações   

@SpringBootApplication

Contém as anotações @ComponentScan, @Configuration e @EnableAutoConfiguration.

Entre eles, @ComponentScan permite que o Spring Boot escaneie a classe de configuração e a adicione ao contexto do programa.

@Configuration é  equivalente ao arquivo de configuração XML de spring; o código Java pode ser usado para verificar a segurança de tipo.

@EnableAutoConfiguration  configuração automática.

A varredura de componente @ComponentScan  pode descobrir e montar automaticamente alguns Beans.

@Component pode ser usado com CommandLineRunner para realizar algumas tarefas básicas após o programa ser iniciado.

A anotação @RestController é uma coleção de @Controller e @ResponseBody, indicando que este é um bean de controlador e o valor de retorno da função é preenchido diretamente no corpo de resposta HTTP, que é um controlador de estilo REST.

@Autowired é importado automaticamente. @PathVariable obtém os parâmetros. @JsonBackReference resolve o problema de links externos aninhados.

@RepositoryRestResourcepublic é usado em conjunto com spring-boot-starter-data-rest.

3. Explicação detalhada das anotações

@SpringBootApplication : Declara que o Spring Boot irá configurar automaticamente o programa conforme necessário.Esta configuração é equivalente às três configurações de @Configuration, @EnableAutoConfiguration e @ComponentScan.

package com.example.myproject;
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 : indica que o resultado de retorno desse método é gravado diretamente no corpo da resposta HTTP, que geralmente é usado ao obter dados de forma assíncrona e é usado para construir uma api RESTful.

Depois de usar @RequestMapping, o valor de retorno é geralmente analisado como um caminho de salto. Após adicionar @responsebody, o resultado de retorno não será analisado como um caminho de salto, mas é gravado diretamente no corpo da resposta HTTP.

Por exemplo, para obter dados json de forma assíncrona, após adicionar @responsebody, os dados json serão retornados diretamente.

Essa anotação geralmente é usada em conjunto com @RequestMapping. Código de amostra:

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

@Controller : usado para definir a classe do controlador. No projeto spring, o controlador é responsável por encaminhar a solicitação de URL enviada pelo usuário para a interface de serviço correspondente (camada de serviço)

Geralmente, essa anotação está na classe e, normalmente, o método precisa cooperar com a anotação @RequestMapping.

Código de amostra:

@Controller
@RequestMapping(“/demo”)
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");
        return"/hello";
    }
}

@RestController : Usado para anotar os componentes da camada de controle (como ações em struts), uma coleção de @ResponseBody e @Controller.

package com.kfit.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(“/demo2”)
publicclass DemoController2 {

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

@RequestMapping : Fornece informações de roteamento, responsáveis ​​pelo mapeamento de URLs para funções específicas no Controller.

@EnableAutoConfiguration : Configuração automática do Spring Boot: tente configurar automaticamente seu aplicativo Spring com base nas dependências jar que você adicionar.

Por exemplo, se HSQLDB existe em seu classpath e você não configurou manualmente nenhum bean de conexão de banco de dados, então configuraremos automaticamente um banco de dados na memória ".

Você pode adicionar anotações @EnableAutoConfiguration ou @SpringBootApplication a uma classe @Configuration para selecionar a configuração automática.

Se você descobrir que classes de configuração automática específicas que você não deseja, você pode usar o atributo de exclusão da anotação @EnableAutoConfiguration para desabilitá-las.

@ComponentScan : indica que esta classe descobre automaticamente os componentes de digitalização.

A compreensão pessoal é equivalente a procurar classes anotadas com @Component, @Controller, @Service, etc., e registrá-los como Beans, você pode coletar automaticamente todos os componentes Spring, incluindo classes @Configuration.

Freqüentemente, usamos a anotação @ComponentScan para pesquisar beans e importá-los em conjunto com a anotação @Autowired. Pode coletar automaticamente todos os componentes Spring, incluindo classes @Configuration.

Se não houver configuração, Spring Boot irá escanear o pacote onde a classe de inicialização está localizada e as classes nos subpacotes com @Service, @Repository e outras anotações.

@Configuration : É equivalente ao arquivo de configuração xml tradicional. Se algumas bibliotecas de terceiros precisam usar o arquivo xml, é recomendado ainda usar a classe @Configuration como a classe de configuração principal do projeto - você pode usar o @ Anotação ImportResource para carregar o arquivo de configuração xml.

@Import : Usado para importar outras classes de configuração. @ImportResource : usado para carregar o arquivo de configuração xml. @Autowired : importa automaticamente os beans dependentes

@Service : geralmente usado para decorar componentes da camada de serviço

@Repository : O uso da anotação @Repository pode garantir que o DAO ou repositórios forneçam tradução de exceção. O DAO ou classe de repositórios modificados por esta anotação serão descobertos e configurados pelo ComponetScan, e não há necessidade de fornecer itens de configuração XML para eles.

@Bean : O método de anotação @Bean é equivalente ao bean configurado em XML.

@Value : injete o valor da propriedade configurada em Spring boot application.properties. Código de amostra:

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

@Inject : Equivalente ao @Autowired padrão, mas não há atributo obrigatório;

@Component : Refere-se ao componente em geral.Quando o componente não está bem classificado, podemos usar esta anotação para marcá-lo.

@Bean : É equivalente ao XML, colocado acima do método, não da classe, o que significa que um bean é gerado e gerenciado pelo spring.

@AutoWired : importa automaticamente os beans dependentes. método byType. Use o Bean configurado para completar a montagem de atributos e métodos.Ele pode anotar variáveis ​​de membros de classe, métodos e construtores para completar o trabalho de montagem automática. Quando (obrigatório = falso) é adicionado, nenhum erro será relatado, mesmo se o bean não for encontrado.

@Qualifier : quando houver vários beans do mesmo tipo, você pode usar @Qualifier ("nome") para especificar. Usado em conjunto com @Autowired. O descritor qualificado @Qualifier não só pode ser injetado de acordo com o nome, mas também pode ser usado para um controle mais refinado sobre como selecionar candidatos. O uso específico é o seguinte:

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

@Resource (name = ”name”, type = ”type”): Se não houver conteúdo entre colchetes, o padrão é byName. Faça coisas semelhantes com @Autowired.

4. anotação jpa

@Entity : @Table (name = ""): Indica que esta é uma classe de entidade. Geralmente usado em jpa, essas duas anotações geralmente são usadas juntas, mas se o nome da tabela e o nome da classe de entidade forem iguais, @Table pode ser omitido

@MappedSuperClass : usado para determinar a entidade que é a classe pai. As propriedades da classe pai podem ser herdadas por subclasses.

@NoRepositoryBean : Geralmente usado como repositório da classe pai.Com esta anotação, o Spring não instancia o repositório.

@Column : se o nome do campo for igual ao nome da coluna, ele pode ser omitido.

@Id : indica que o atributo é a chave primária.

@GeneratedValue (strategy = GenerationType.SEQUENCE, generator = "repair_seq"): indica que a estratégia de geração de chave primária é sequência (pode ser Auto, IDENTITY, nativo, etc., Auto indica que pode ser alternada entre vários bancos de dados), e o nome da sequência especificada é repair_seq.

@SequenceGeneretor (name = "repair_seq", sequenceName = "seq_repair", alocaçãoSize = 1): name é o nome da sequência a ser usada, sequenceName é o nome da sequência do banco de dados e os dois nomes podem ser iguais.

@Transient : indica que o atributo não é um mapeamento para um campo da tabela do banco de dados e a estrutura ORM irá ignorar esse atributo.

Se um atributo não for um mapeamento de campo da tabela do banco de dados, ele deve ser marcado como @Transient, caso contrário, a estrutura ORM padroniza sua anotação como @Basic. @Basic (fetch = FetchType.LAZY): A tag pode especificar o método de carregamento dos atributos da entidade

@JsonIgnore : A função é ignorar algumas propriedades no Java bean durante a serialização json, e tanto a serialização quanto a desserialização são afetadas.

@JoinColumn (name = ”loginId”): Um para um: Uma chave estrangeira nesta tabela que aponta para outra tabela. Um para muitos: Outra tabela aponta para a chave estrangeira desta tabela.

@OneToOne, @OneToMany, @ManyToOne : Correspondem a um-para-um, um-para-muitos e muitos-para-um no arquivo de configuração de hibernação.

5. anotações relacionadas a Primavera / MVC

@RequestMapping : @RequestMapping ("/ path") indica que o controlador processa todas as solicitações de URL para "/ path".

RequestMapping é uma anotação usada para processar o mapeamento de endereço de solicitação, que pode ser usado em classes ou métodos.

Usado em classes, significa que todos os métodos da classe que respondem a solicitações usam esse endereço como o caminho pai. A anotação possui seis atributos:

params : especifica que certos valores de parâmetro devem ser incluídos na solicitação antes que o método seja processado.

cabeçalhos : a solicitação especificada deve conter certos valores de cabeçalho especificados para que o método processe a solicitação.

valor : especifique o endereço real da solicitação, o endereço especificado pode estar no modo de modelo de URI

método : especifique o tipo de método da solicitação, GET, POST, PUT, DELETE, etc.

consome : Especifique o tipo de conteúdo (Content-Type) do conteúdo enviado para processar a solicitação, como application / json, text / html;

produz : especifica o tipo de conteúdo a ser retornado e retorna apenas quando o tipo (Aceitar) no cabeçalho da solicitação contém o tipo especificado

@RequestParam : usado na frente dos parâmetros do método.
@RequestParam
String a = request.getParameter ("a").

@PathVariable : variável de caminho. O parâmetro deve ser igual ao nome entre colchetes

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

Acho que você gosta

Origin blog.csdn.net/qq_38384994/article/details/105787799
Recomendado
Clasificación