Análisis detallado de las anotaciones de Spring Boot

 1. Manejo de excepciones globales

@ControllerAdvice : contiene @Component. Puede escanearse. Maneje las excepciones de manera uniforme.

@ExceptionHandler (Exception.class): se usa en el método para indicar que el siguiente método se ejecutará cuando se encuentre esta excepción.

2. Lista de anotaciones   

@SpringBootApplication :

Contiene anotaciones @ComponentScan, @Configuration y @EnableAutoConfiguration.

Entre ellos, @ComponentScan permite que Spring Boot escanee la clase Configuración y la agregue al contexto del programa.

@Configuration es  equivalente al archivo de configuración XML de Spring; el código Java se puede usar para verificar la seguridad de los tipos.

@EnableAutoConfiguration  configuración automática.

El escaneo de componentes de @ComponentScan  puede descubrir y ensamblar automáticamente algunos Beans.

@Component se puede usar con CommandLineRunner para realizar algunas tareas básicas después de que se inicia el programa.

La anotación @RestController es una colección de @Controller y @ResponseBody, lo que indica que se trata de un bean controlador, y el valor de retorno de la función se completa directamente en el cuerpo de respuesta HTTP, que es un controlador de estilo REST.

@Autowired se importa automáticamente. @PathVariable obtiene los parámetros. @JsonBackReference resuelve el problema de los enlaces externos anidados.

@RepositoryRestResourcepublic se usa junto con spring-boot-starter-data-rest.

3. Explicación detallada de las anotaciones

@SpringBootApplication : Declare que Spring Boot configurará automáticamente el programa según sea necesario. Esta configuración es equivalente a las tres configuraciones de @Configuration, @EnableAutoConfiguration y @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 el resultado de retorno de este método se escribe directamente en el cuerpo de la respuesta HTTP, que generalmente se usa cuando se obtienen datos de forma asincrónica, y se usa para construir una API RESTful.

Después de usar @RequestMapping, el valor devuelto generalmente se analiza como una ruta de salto. Después de agregar @responsebody, el resultado devuelto no se analizará como una ruta de salto, sino que se escribirá directamente en el cuerpo de la respuesta HTTP.

Por ejemplo, para obtener datos json de forma asincrónica, después de agregar @responsebody, los datos json se devolverán directamente.

Esta anotación se usa generalmente junto con @RequestMapping. Código de muestra:

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

@Controller : se utiliza para definir la clase de controlador. En el proyecto de primavera, el controlador es responsable de reenviar la solicitud de URL enviada por el usuario a la interfaz de servicio correspondiente (capa de servicio)

Generalmente, esta anotación está en la clase y, por lo general, el método necesita cooperar con la anotación @RequestMapping.

Código de muestra:

@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 : se utiliza para anotar componentes de la capa de control (como acciones en struts), una colección de @ResponseBody y @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 : proporciona información de enrutamiento, responsable de la asignación de URL a funciones específicas en el controlador.

@EnableAutoConfiguration : Configuración automática de Spring Boot: intente configurar automáticamente su aplicación Spring en función de las dependencias de jar que agregue.

Por ejemplo, si HSQLDB existe en su classpath y no ha configurado manualmente ningún bean de conexión de base de datos, configuraremos automáticamente una base de datos en memoria ".

Puede agregar anotaciones @EnableAutoConfiguration o @SpringBootApplication a una clase @Configuration para seleccionar la configuración automática.

Si encuentra que se aplican clases de configuración automática específicas que no desea, puede usar el atributo de exclusión de la anotación @EnableAutoConfiguration para deshabilitarlas.

@ComponentScan : indica que esta clase descubre automáticamente los componentes de escaneo.

La comprensión personal es equivalente a buscar clases anotadas con @Component, @Controller, @Service, etc., y registrarlas como Beans, puede recopilar automáticamente todos los componentes de Spring, incluidas las clases de @Configuration.

A menudo usamos la anotación @ComponentScan para buscar beans e importarlos junto con la anotación @Autowired. Puede recopilar automáticamente todos los componentes de Spring, incluidas las clases @Configuration.

Si no hay configuración, Spring Boot escaneará el paquete donde se encuentra la clase de inicio y las clases debajo de los subpaquetes con @Service, @Repository y otras anotaciones.

@Configuration : Es equivalente al archivo de configuración xml tradicional. Si algunas bibliotecas de terceros necesitan usar el archivo xml, se recomienda seguir usando la clase @Configuration como la clase de configuración principal del proyecto; puede usar el @ Anotación ImportResource para cargar el archivo de configuración xml.

@Import : se utiliza para importar otras clases de configuración. @ImportResource : se usa para cargar el archivo de configuración xml. @Autowired : importa automáticamente beans dependientes

@Service : generalmente se usa para decorar componentes de la capa de servicio

@Repository : El uso de la anotación @Repository puede garantizar que DAO o los repositorios proporcionen una traducción de excepción. La DAO o la clase de repositorios modificada por esta anotación serán descubiertas y configuradas por ComponetScan, y no es necesario proporcionar elementos de configuración XML para ellos.

@Bean : El método de anotación @Bean es equivalente al bean configurado en XML.

@Value : inyecta el valor de la propiedad configurada en Spring boot application.properties. Código de muestra:

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

@Inject : Equivalente al @Autowired predeterminado, pero no hay ningún atributo obligatorio;

@Componente : Se refiere al componente en general, cuando el componente no está bien clasificado podemos usar esta anotación para marcarlo.

@Bean : Es equivalente al XML, colocado encima del método, no de la clase, lo que significa que Spring genera y gestiona un bean.

@AutoWired : Importa automáticamente beans dependientes. método byType. Utilice el Bean configurado para completar el ensamblaje de atributos y métodos. Puede anotar variables de miembro de clase, métodos y constructores para completar el trabajo de ensamblaje automático. Cuando se agrega (required = false), no se informará ningún error incluso si no se encuentra el bean.

@Qualifier : cuando hay varios beans del mismo tipo, puede usar @Qualifier ("nombre") para especificar. Se utiliza junto con @Autowired. El descriptor calificado de @Qualifier no solo se puede inyectar de acuerdo con el nombre, sino que también se puede usar para un control más detallado sobre cómo seleccionar candidatos. El uso específico es el siguiente:

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

@Resource (name = ”name”, type = ”type”): Si no hay contenido entre paréntesis, el valor predeterminado es byName. Haz cosas similares con @Autowired.

4. anotación jpa

@Entity : @Table (name = ""): Indica que esta es una clase de entidad. Usado generalmente en jpa, estas dos anotaciones generalmente se usan juntas, pero si el nombre de la tabla y el nombre de la clase de entidad son iguales, se puede omitir @Table

@MappedSuperClass : se utiliza para determinar la entidad que es la clase principal. Las propiedades de la clase padre pueden ser heredadas por subclases.

@NoRepositoryBean : Generalmente se usa como el repositorio de la clase padre. Con esta anotación, Spring no creará una instancia del repositorio.

@Column : si el nombre del campo es el mismo que el de la columna, se puede omitir.

@Id : indica que el atributo es la clave principal.

@GeneratedValue (estrategia = GenerationType.SEQUENCE, generator = "repair_seq"): indica que la estrategia de generación de la clave principal es la secuencia (puede ser Auto, IDENTITY, native, etc., Auto indica que se puede cambiar entre múltiples bases de datos), y el nombre de la secuencia especificada es repair_seq.

@SequenceGeneretor (name = "repair_seq", sequenceName = "seq_repair", deploymentSize = 1): nombre es el nombre de la secuencia para usar, sequenceName es el nombre de secuencia de la base de datos y los dos nombres pueden ser iguales.

@Transient : indica que el atributo no es una asignación a un campo de la tabla de la base de datos y el marco ORM ignorará este atributo.

Si un atributo no es un mapeo de campo de la tabla de la base de datos, debe marcarse como @Transient; de lo contrario, el marco ORM predetermina su anotación como @Basic. @Basic (fetch = FetchType.LAZY): la etiqueta puede especificar el método de carga de los atributos de la entidad

@JsonIgnore : la función es ignorar algunas propiedades en el bean Java durante la serialización json, y tanto la serialización como la deserialización se ven afectadas.

@JoinColumn (name = ”loginId”): Uno a uno: una clave externa en esta tabla que apunta a otra tabla. Uno a muchos: otra tabla apunta a la clave externa de esta tabla.

@OneToOne, @OneToMany, @ManyToOne : Corresponde a uno a uno, uno a muchos y muchos a uno en el archivo de configuración de hibernación.

5.Anotaciones relacionadas con SpringMVC

@RequestMapping : @RequestMapping ("/ ruta") indica que el controlador procesa todas las solicitudes de URL para "/ ruta".

RequestMapping es una anotación que se usa para procesar la asignación de direcciones de solicitud, que se puede usar en clases o métodos.

Usado en clases, significa que todos los métodos de la clase que responden a solicitudes usan esta dirección como ruta principal. La anotación tiene seis atributos:

params : especifica que ciertos valores de parámetros deben incluirse en la solicitud antes de que se procese el método.

encabezados : la solicitud especificada debe contener ciertos valores de encabezado especificados para que el método procese la solicitud.

valor : especifique la dirección real de la solicitud, la dirección especificada puede estar en el modo de plantilla URI

método : especifique el tipo de método de la solicitud, GET, POST, PUT, DELETE, etc.

consume : especifique el tipo de contenido (Content-Type) del contenido enviado para procesar la solicitud, como application / json, text / html;

produce : especifica el tipo de contenido que se devolverá y solo devuelve cuando el tipo (Aceptar) en el encabezado de la solicitud contiene el tipo especificado

@RequestParam : se utiliza delante de los parámetros del método.
@RequestParam
String a = request.getParameter ("a").

@PathVariable : variable de ruta. El parámetro debe ser el mismo que el nombre entre llaves

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

Supongo que te gusta

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