Anotaciones comunes y ejemplos de springboot

一、 @SpringBootApplication

Entre SpringBootlas clases de inicio creadas automáticamente por el marco para nosotros, @SpringBootApplicationlas etiquetas de anotación se utilizan para modificar la clase de inicio.
@SpringBootApplicationLa etiqueta de anotación es en realidad una etiqueta de anotación compuesta, que @EnableAutoConfigurationgeneralmente @ComponentScanse usa en la clase principal

anotación ilustrar
@SpringBootApplication Se usa para declarar clases de inicio para modificación.
@EnableAutoConfiguration Es springbootla anotación central para la configuración automática, a través de la cual springla aplicación debe beaninyectarse en el contenedor.
@ComponentScan Se utiliza para escanear automáticamente las clases identificadas por las anotaciones y generarlas iocen el contenedor bean. El ámbito de escaneo predeterminado son @ComponentScanlas clases en el paquete de clase de configuración y los subpaquetes donde se encuentran las anotaciones.

Dos, @Configuración, @Bean

anotación ilustrar
@Configuración Actuar sobre la clase para configurar springel contenedor (contexto de la aplicación), lo que equivale a usar la clase como un archivo springde configuraciónxml
@Frijol Cree beanun objeto y agréguelo al contenedor, actuando sobre el método.
Ejemplo:

SSMDurante la integración del marco nativo , si queremos IOCagregar un objeto personalizado al contenedor, lo que debemos hacer es agregar la declaración de contenido de la siguiente etiqueta
debajo Springde la etiqueta del talón del archivo de configuración utilizado por el marco:

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

Pero en SpringBootel marco, podemos IOCinyectar directamente objetos personalizados en el contenedor creando y devolviendo objetos Java.
Este proceso depende de @Configurationlas etiquetas de anotación y @Beanlas etiquetas de anotación.
Primero preparamos una Userclase:

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

Luego cree una UserConfigurationclase y use @Configurationla etiqueta de anotación para esta clase para declarar que esta clase es una clase de configuración:

@Configuration
public class UserConfiguration {
    
    
}

Cree un método en esta clase, el valor de retorno del método es Usertipo y el nombre del método es IOCel nombre del objeto inyectado en el contenedor, y use @Beanla etiqueta de anotación 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;
  }
}

En este punto, el flujo lógico SpringBootdel marco para escanear e IOCinyectar objetos en el contenedor es:

  1. Cuando el marco SpringBoot escanea @Configurationel tipo decorado con etiquetas de anotación, considerará esta clase como una clase de configuración;
  2. @BeanEl objeto de valor de retorno del método decorado con etiquetas de anotación en la clase de configuración se inyectará automáticamente IOCen el contenedor para su almacenamiento;
  3. @BeanEl tipo de datos del valor de retorno del método de decoración de la etiqueta de anotación es equivalente al valor del atributo de la etiqueta class;
  4. De forma predeterminada, @Beanel nombre del método decorado con la etiqueta de anotación es equivalente al idvalor del atributo de la etiqueta, es decir, el IOCnombre del objeto en el contenedor.

De esta forma, podemos inyectar XMLfácilmente IOCobjetos Java personalizados en el contenedor sin usar archivos de configuración.


3. @AutoWired

@AutowiredDe forma predeterminada, se ensambla por tipo, que a menudo se usa en las clases de implementación de la capa empresarial y las clases de implementación de la capa de persistencia.

Ejemplo:

En TestControllerla clase, @Autowiredse inyecta automáticamente un objeto a través de la etiqueta de anotación User, y cuando testse accede al método, Userse imprime el objeto:

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

El resultado de ejecución del programa al acceder testal método:
inserte la descripción de la imagen aquí


四、@Servicio、@Controlador、@Repositorio、@Componente

anotación ilustrar
@Servicio Para la capa de negocios, la capa de lógica de negocios servicese inyecta en springel contenedor
@Controlador contenedor controllerde inyección de capa de controlspring
@Repositorio Contenedor daode inyección de capa de persistenciaspring
@Componente contenedor domainde inyección comúnspring

Ejemplo, @ResponseBody, @RestController

anotación ilustrar
@ResponseBody Actúe sobre el método o la clase, deje que el resultado de retorno del método se escriba directamente en HTTP response body, sin pasar por el analizador de vistas, y los datos devueltos se mostrarán directamente en la página.
@RestController Es una combinación de @Controllery , actuando sobre la clase, el efecto es igual a sumar y @ResponseBodysobre la clase@ResponseBody@Controller

六、@RequestMapping、@GetMapping、@PostMapping

anotación ilustrar
@RequestMapping urlUse esta anotación para acceder a través de la configuración , que puede getser o publicar
@GetMapping Use esta anotación para urlacceder a través de la configuración y limitar getel método de solicitud
@PostMapeo Use esta anotación para urlacceder a través de la configuración y limitar postel método de solicitud

Ejemplo, @RequestParam, @RequestBody

anotación ilustrar
@RequestParam Se utiliza principalmente para recibir url?los siguientes parámetros geto postsolicitudes, siempre que haya parámetros detrás, se url?pueden obtener los parámetros correspondientes
@RequestBody Esta anotación se usa para obtener datos del cuerpo de la solicitud ( body), getno hay cuerpo de solicitud, por lo que generalmente se usa para postsolicitudes
  1. En GETlas solicitudes, no se puede utilizar@RequestBody
  2. En la solicitud, POSTse puede usar @RequestBodyy @RequestParam, pero si se usa @RequestBody, se debe unificar la configuración de conversión de parámetros.
  3. Puede usar múltiples @RequestParamdatos de búsqueda, @RequestBodyno

Supongo que te gusta

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