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;
}