Anotações comuns e exemplos de springboot

一、 @SpringBootApplication

Entre SpringBootas classes de inicialização criadas automaticamente pelo framework para nós, @SpringBootApplicationas tags de anotação são usadas para modificar a classe de inicialização.
@SpringBootApplicationA tag de anotação é na verdade uma tag de anotação composta, incluindo @EnableAutoConfiguration, @ComponentScangeralmente usada na classe principal

anotação ilustrar
@SpringBootApplication Usado para declarar classes de inicialização para modificação
@EnableAutoConfiguration É springboota anotação central para configuração automática, por meio da qual springa aplicação precisa ser beaninjetada no container
@ComponentScan Ele é usado para verificar automaticamente as classes identificadas por anotações e gerá-las iocno contêiner bean. O escopo de verificação padrão são @ComponentScanas classes no pacote de classe de configuração e subpacotes onde as anotações estão localizadas

Dois, @Configuration, @Bean

anotação ilustrar
@Configuração Agir na classe para configurar springo contêiner (contexto do aplicativo), o que equivale a usar a classe como um arquivo springde configuraçãoxml
@Feijão Crie beanum objeto e adicione-o ao container, agindo sobre o método
Exemplo:

SSMDurante a integração do framework nativo , se quisermos IOCadicionar um objeto personalizado ao container, o que precisamos fazer é adicionar a declaração de conteúdo da seguinte tag
abaixo Springda tag heel do arquivo de configuração usado pelo framework:

<bean id="user" class="com.qf.testspringboot.pojo.User">
 <property name="id" value="1"/>
 <property name="username" value="张三"/>
 <property name="age" value="22"/>
</bean>

Mas na SpringBootestrutura, podemos IOCinjetar objetos personalizados diretamente no contêiner criando e retornando objetos Java.
Este processo depende de @Configurationtags de anotação e @Beantags de anotação.
Primeiro preparamos uma Useraula:

@Data //记得要导入Lombok相关的依赖
@NoArgsConstructor
@AllArgsConstructor
public class User {
    
    
 private Integer id;
 private String username;
 private Integer age;
}

Em seguida, crie uma UserConfigurationclasse e use @Configurationa tag de anotação para esta classe para declarar que esta classe é uma classe de configuração:

@Configuration
public class UserConfiguration {
    
    
}

Crie um método nesta classe, o valor de retorno do método é Usertipo e o nome do método é IOCo nome do objeto injetado no contêiner e use @Beano rótulo de anotação para este método:

@Configuration
public class UserConfiguration {
    
    
  @Bean
  public User user() {
    
    
  /*
  下列代码等价于:
  <bean id="user" class="com.qf.testspringboot.pojo.User">
  <property name="id" value="1"/>
  <property name="username" value="张三"/>
  <property name="age" value="22"/>
  </bean>
  方法的返回值数据类型等价于<bean>标签中的class属性取值
  方法的方法名等价于<bean>标签中的id属性取值
  */
  User user = new User(1, "张三", 22);
    return user;
  }
}

Neste ponto, o fluxo lógico para SpringBooto framework escanear e IOCinjetar objetos no container é:

  1. Quando o framework SpringBoot escaneia @Configurationo tipo decorado com tags de anotação, ele irá considerar esta classe como uma classe de configuração;
  2. @BeanO objeto de valor de retorno do método decorado com tags de anotação na classe de configuração será injetado automaticamente IOCno contêiner para armazenamento;
  3. @BeanO tipo de dado do valor de retorno do método de decoração do tag de anotação é equivalente ao valor do atributo do tag class;
  4. Por padrão, @Beano nome do método decorado com a tag de anotação é equivalente ao idvalor do atributo da tag, ou seja, o IOCnome do objeto no contêiner.

Dessa forma, podemos XMLfacilmente IOCinjetar objetos Java personalizados no contêiner sem usar arquivos de configuração.


3. @AutoWired

@AutowiredPor padrão, ele é montado por tipo, que geralmente é usado em classes de implementação de camada de negócios e classes de implementação de camada de persistência

Exemplo:

Na TestControllerclasse, @Autowiredum objeto é injetado automaticamente através da tag de anotação User, e quando testo método é acessado, o Userobjeto é impresso:

@Controller //SpringMVC当中的注解标签都还能用
public class TestController {
    
    
 @Autowired
 private User user; //自动注入自定义的User对象
 @RequestMapping("/test")
 @ResponseBody
 public String test() {
    
    
 System.out.println(user); //打印这个User对象
 return "Hello SpringBoot!";
 }
}

O resultado da execução do programa ao acessar testo método:
insira a descrição da imagem aqui


四、@Service、@Controller、@Repository、@Component

anotação ilustrar
@Serviço Para a camada de negócios, a camada de lógica de negócios serviceé injetada springno contêiner
@Controlador recipiente controllerde injeção de camada de controlespring
@Repositório Contêiner daode injeção de camada de persistênciaspring
@Componente recipiente domainde injeção comumspring

五、@ResponseBody、@RestController

anotação ilustrar
@ResponseBody Aja no método ou classe, deixe o resultado de retorno do método ser gravado diretamente em HTTP response body, sem passar pelo analisador de visualização, e os dados retornados serão exibidos diretamente na página.
@RestController É uma combinação de @Controllere , atuando na classe, o efeito é igual a somar e @ResponseBodyna classe@ResponseBody@Controller

六、@RequestMapping、@GetMapping、@PostMapping

anotação ilustrar
@RequestMapping urlUse esta anotação para acessar via configuração , que pode getser ou postar
@GetMapping Use esta anotação para urlacessar por meio da configuração e limitar geto método de solicitação
@PostMapping Use esta anotação para urlacessar por meio da configuração e limitar posto método de solicitação

七、@RequestParam、@RequestBody

anotação ilustrar
@RequestParam É usado principalmente para receber url?os seguintes parâmetros getou postsolicitações, desde que haja parâmetros por trás, url?os parâmetros correspondentes podem ser obtidos
@RequestBody Essa anotação é utilizada para obter os dados do corpo da requisição ( body), getnão há corpo da requisição, então geralmente é utilizada para postrequisições
  1. Em GETrequisições, você não pode usar@RequestBody
  2. Na requisição, POSTpode ser usado @RequestBodye @RequestParam, mas se for usado @RequestBody, a configuração de conversão de parâmetros deve ser unificada.
  3. Pode usar vários @RequestParamdados de busca, @RequestBodynão

Acho que você gosta

Origin blog.csdn.net/klylove/article/details/125408327
Recomendado
Clasificación