Dark Horse SpringBoot - Estación de servicio Knowledge

1. Teclas de acceso directo de ideas

CTRL + F12: IDEA viene con la capacidad de ver los atributos y métodos de esta clase

CTRL+h: IDEA viene con visualización de clases de implementación relacionadas

2. Ocultar archivos específicos o archivos de tipos específicos en Idea

  1. Configuración → Tipos de archivos → Archivos y carpetas ignorados
  2. Introduzca el nombre del archivo que desea ocultar. Se admite el carácter comodín *.
  3. Presione Enter para confirmar la adición

3. Copia el proyecto

Resumen de notas

  1. Copie el proyecto correspondiente en el espacio de trabajo y modifique el nombre del proyecto.
  2. Elimine los archivos de configuración relacionados con Idea y conserve solo el directorio src y el archivo pom.xml
  3. Modifique el artefactoId en el archivo pom.xml para que sea el mismo que el nuevo nombre del proyecto/módulo.
  4. Quitar etiqueta de nombre (opcional)
  5. Mantenga los proyectos de respaldo para su uso posterior

en principio

  • Preservar la infraestructura de ingeniería.
  • Borrar las huellas del proyecto original.

Nota: Al modificar el archivo pom, debe eliminar el nombre y la descripción; de lo contrario, se producirá un error de índice de Maven.

Insertar descripción de la imagen aquí

es decir, el orden incorrecto

Insertar descripción de la imagen aquí

4.estilo DESCANSO

4.1 Introducción al DESCANSO

Resumen de notas

  1. DESCANSAR
  2. 4 acciones
    • OBTENER consulta
    • POST agregar/guardar
    • Poner aumento
    • BORRAR borrar
  3. Sosegado

REST (Transferencia de Estado Representacional), transferencia de estado representacional

  • Formulario de descripción de recursos de estilo tradicional

    http:// localhost/user/ get ById?id=1

    http:// / localhost/usuario/ guardar usuario

  • Formulario de descripción del estilo REST

    http://localhost/usuario/1

    http://localhost/usuario

ventaja:

  • Ocultar el comportamiento de acceso a los recursos. Es imposible saber qué operaciones se realizan en los recursos a través de la dirección.
  • Simplificar la escritura

El estilo REST simplifica la forma de URL de la barra de direcciones, que desempeña un cierto papel en la protección de la seguridad y dificulta la identificación.

Al acceder a recursos según el estilo REST, utilice acciones de comportamiento para distinguir qué operaciones se realizan en los recursos.

Insertar descripción de la imagen aquí

Aviso:

El comportamiento anterior es una convención, la convención no es una especificación y puede romperse, por lo que se llama estilo REST, no especificación REST.
El nombre de la descripción del módulo generalmente es plural, es decir, la descripción del formato con s agregado, lo que indica esto. tipo de recurso en lugar de un único recurso, por ejemplo: usuarios, libros, cuentas...

Acceder a recursos según el estilo REST se llama RESTful

4.2 Caso de entrada RESTful

Resumen de notas

1. Primeros pasos Caso
2. Solicitar configuración del método
3. Solicitar parámetros de ruta

1. Nombre:@RequestMapping

  • Tipo: anotación de método

  • Ubicación: encima de la definición del método del controlador SpringMVC

  • Función: establece la ruta de acceso de solicitud del método del controlador actual

  • ejemplo:

    @RequestMapping(value = "/users", method = RequestMethod.POST)
    @ResponseBody
    public string save(@RequestBody User user){
          
          
        system.out.println( "user save. . ." + user);
        return "{ ' module' : 'user save' }";
    }
    
  • Atributos

    • valor (predeterminado): solicitar ruta de acceso
    • método: acción de solicitud http, acción estándar (GET/POST/PUT/DELETE)

2. Nombre: @PathVariable

  • Tipo: anotación de parámetro formal

  • Posición: delante de la definición de parámetros del método del controlador SpringMVC

  • Función: vincula la relación entre los parámetros de ruta y los parámetros formales del método del procesador, lo que requiere una correspondencia uno a uno entre los nombres de los parámetros de ruta y los nombres de parámetros formales.

  • ejemplo:

    @RequestMapping(value = "/users/{id}" ,method = RequestMethod.DELETE)
    @ResponseBody
    public string delete(@PathVariable Integer id){
          
          
        system.out.print1n( "user delete. . ." + id);
        return "{ ' module ' : 'user delete' }" ;
    }
    

3.@RequestBody @RequestParam @PathVariable

  • la diferencia
    • @RequestParam se utiliza para recibir parámetros de dirección URL o parámetros de formulario.
    • @RequestBody se utiliza para recibir datos json
    • @PathVariable se usa para recibir parámetros de ruta, use **{nombre de parámetro}** para describir los parámetros de ruta
  • solicitud
    • En desarrollos posteriores, cuando se envía más de un parámetro de solicitud , el formato json es el principal y @RequestBody se usa ampliamente.
    • Si envía datos en formato que no sea json, utilice @RequestParam para recibir los parámetros de la solicitud.
    • Utilice RESTful para el desarrollo. Cuando el número de parámetros es pequeño, como 1 , puede utilizar **@PathVariable** para recibir la variable de ruta de solicitud, que generalmente se utiliza para pasar el valor de identificación.
  1. Establecer acción de solicitud http (verbo)

    //增加
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(@RequestBody User user){
          
          
        System.out.println("user save..."+user);
        return "{'module':'user save...'}";
    }
    
    //修改
    @RequestMapping(value = "/users",method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user){
          
          
        System.out.println("user update..."+user);
        return "{'module':'user update...'}";
    }
    
  2. Establecer parámetros de solicitud (variables de ruta)

    //删除
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id){
          
          
        System.out.println("user delete...");
        return "{'module':'user delete...'}";
    }
    

    Palabra clave @PathVariable, tenga cuidado de no olvidar agregar caracteres {id} a la ruta

Ejemplo:

//RESTful
@Controller
public class BookController {
    
    

    //增加
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(@RequestBody User user){
    
    
        System.out.println("user save...post");
        return "{'module':'user save...post'}";
    }

    //删除
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id){
    
    
        System.out.println("user delete...");
        return "{'module':'user delete...'}";
    }

    //修改
    @RequestMapping(value = "/users",method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user){
    
    
        System.out.println("user update..."+user);
        return "{'module':'user update...'}";
    }

    //查询--查询所有
    @RequestMapping(value ="/users",method = RequestMethod.GET)
    @ResponseBody
    public String getAll(){
    
    
        System.out.println("user getAll...");
        return "{'module':'user getAll...'}";
    }
    //查询--根据id查询
    @RequestMapping(value ="/users/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getById(@PathVariable Integer id){
    
    
        System.out.println("user getById..."+id);
        return "{'module':'user getById...'}";
    }

}


4.3REST desarrollo rápido

Resumen de notas

1. Desarrollo rápido RESTful (desarrollo estándar)
2. @RestController
3. Mapeo de acciones de solicitud estándar (4 tipos)

1. Nombre: @RestController

  • Tipo: anotación de clase

  • Posición: Por encima de la definición de clase de controlador del desarrollo RESTful basado en SpringMVC

  • Función: establece la clase de controlador actual en estilo RESTful, que es equivalente a la función combinada de las dos anotaciones @Controller y @ResponseBody

  • ejemplo:

    @RestController
    public class BookController {
          
          
        
    }
    

2. Nombre: @GetMapping@PostMapping@PutMapping@DelgteMapping

  • Tipo: anotación de método

  • Posición: encima de la definición del método del controlador de desarrollo RESTful basado en SpringMVC

  • Función: establece la ruta de acceso de solicitud del método del controlador actual y la acción de solicitud, cada una correspondiente a una acción de solicitud, por ejemplo, @GetNapping corresponde a la solicitud GET

  • ejemplo:

    @GetMapping("/{id}")
    public string getById(@PathVariable Integer id){
          
          
        system.out.println("book getById. . . "+id);
        return "{ ' module' : ' book getById ' }" ;
    }
    
  • Valor de atributo
    (predeterminado): Solicitar ruta de acceso

Ejemplo:

@RestController
@RequestMapping("/users")
public class BookController2 {
    
    

    //增加
    @PostMapping
    public String save(@RequestBody User user) {
    
    
        System.out.println("user save..." + user);
        return "{'module':'user save...'}";
    }

    //删除
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id) {
    
    
        System.out.println("user delete...");
        return "{'module':'user delete...'}";
    }

    //修改
    @PutMapping
    public String update(@RequestBody User user) {
    
    
        System.out.println("user update..." + user);
        return "{'module':'user update...'}";
    }

    //查询--查询所有
    @GetMapping
    public String getAll() {
    
    
        System.out.println("user getAll...");
        return "{'module':'user getAll...'}";
    }

    //查询--根据id查询
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id) {
    
    
        System.out.println("user getById..." + id);
        return "{'module':'user getById...'}";
    }

}

5.Modelo de desarrollo de Java Rest

Restful es un estilo de arquitectura de software y un estilo de diseño, no un estándar, solo proporciona un conjunto de principios y restricciones de diseño. Se utiliza principalmente para software que interactúa entre el cliente y el servidor. El software diseñado en base a este estilo puede ser más conciso, con más capas y más fácil de implementar mecanismos de almacenamiento en caché.

Las solicitudes de estilo relajante utilizan el "método URL + solicitud" para expresar el propósito de una solicitud. Los cuatro verbos en el protocolo HTTP que indican el modo de operación son los siguientes:

  • Obtener: Obtener recursos

  • Publicación: Crear un nuevo recurso

  • Poner: actualizar recursos

  • Eliminar: eliminar recursos

Implemente el modo Descanso mediante anotaciones:

@RestController: @ResponseBody + @Controller, lo que significa que los datos devueltos están en formato json ;

(La anotación @RestController es equivalente a la combinación de @ResponseBody y @Controller)

@Controller
@ResponseBody
public class MyController {
     
      }

@RestController
public class MyRestController {
     
      }

  • @RespuestaCuerpo

    1. En la operación real, solo necesitamos usar la anotación @RequestBody en la capa Controlador para deserializar el objeto;

    2. Si necesita serializar los métodos del Controlador, debemos usar @ResponseBody en el valor de retorno; también puede anotar @ResponseBody en la clase Controlador, para que todos los métodos de esta clase puedan serializarse.

  • @Controlador

    ​ @Controller es una clase @Component especializada. En la práctica, @Controller se usa para indicar si una clase en Spring puede aceptar solicitudes HTTP. Generalmente está vinculada a @ResponseBody

  • @Componente

    1. Cree una instancia de POJO ordinario (objeto Java simple ordinario) en el contenedor Spring, que es equivalente al archivo de configuración.

    2. Generalmente se refiere a componentes. Cuando los componentes son difíciles de clasificar, puede utilizar la anotación @Component para la anotación.

@GetMapping, @PostMapping, @DeletMapping, @PutMapping: corresponden a cuatro métodos de operación respectivamente.

Ejemplo:

//Rest模式
@RestController 
@RequestMapping("/books")
public class BookController {
    
    
 
    @GetMapping 
    public String getById() {
    
    
        System.out.println("springboot is running...");
        return "springboot is running...";
    }
 
    @DeletMapping("/{id}")
    public String getById() {
    
    
        System.out.println("springboot is running...");
        return "springboot is running...";
    }
 
}

Referencias: Java @RestController Anotación Analysis_bit&y's Blog-CSDN Blog

6. La solución a la desaparición de la función de aviso automático.

Resumen de notas

Especificar el archivo de configuración SpringBoot

  1. Configuración → Estructura del proyecto → Facetas
  2. Seleccione el proyecto/proyecto correspondiente
  3. Personalizar arranque de primavera
  4. Seleccionar un perfil

Insertar descripción de la imagen aquí

Suplemento: después de que idea2022 se incluya en recursos, se reconocerá automáticamente. Si no se reconoce, haga clic en Actualizar Maven.

7.@Anotación Autowired

¿Qué es?

Cuando se utilizan las anotaciones @Repository, @Component y @Service, el escaneo de componentes de Spring lo descubrirá automáticamente y lo inicializará como un bean en el contexto de la aplicación Spring .

Cuando necesite utilizar este bean, agregue la anotación @Autowired y se creará este bean.

Suplemento: la inicialización se basa en el constructor sin argumentos.

¿Cuál es el efecto?

El valor predeterminado se basa en el tipo de atributo y Spring inyecta automáticamente el valor del atributo coincidente.

¿cómo utilizar?

​ Las anotaciones @Autowired se pueden anotar en propiedades, métodos y constructores.

Recomendación: anote el constructor, como se muestra en la figura, marque la anotación @Autowired en el constructor.

Insertar descripción de la imagen aquí

En este punto, el orden de inicialización de los miembros de la clase es diferente. El orden es miembros estáticos -> inicializar variables a valores predeterminados -> constructor -> asignar valores a variables.

Si la anotación es sobre una propiedad, las propiedades y métodos de esta propiedad (objeto) no se pueden usar en el constructor.

Enlace de referencia: Explicación detallada de las anotaciones de @Autowired: súper detallada y fácil de entender_El blog de Never Sleeping in Time-CSDN Blog_@autowired

8.@Repositorio、@Componente、@Servicio、@Controlador注解

Su función es entregar objetos a la gestión del manantial.

La función de la anotación @Repository no es solo identificar la clase como un Bean, sino también encapsular las excepciones de acceso a datos lanzadas en la clase anotada en el tipo de excepción de acceso a datos de Spring. Spring en sí proporciona una rica estructura de excepción de acceso a datos que es independiente de la tecnología de acceso a datos específica, que se utiliza para encapsular excepciones lanzadas por diferentes marcos de capas de persistencia, haciendo que las excepciones sean independientes del marco subyacente.

Se utilizan en diferentes niveles del sistema de software:

  • @Component es un concepto generalizado que solo representa un componente (Bean), que se puede utilizar en cualquier nivel.
  • @Service suele funcionar en la capa empresarial.
  • @Controller suele funcionar en la capa de control.
  • @Repository normalmente funciona en la capa de persistencia.

Al utilizar las anotaciones @Repository, @Component, @Service y @Constroller en la clase, Spring creará automáticamente el objeto BeanDefinition correspondiente y lo registrará en ApplicationContext. Estas clases se convierten en componentes administrados por Spring. Estas tres anotaciones actúan sobre clases en diferentes niveles de software y su uso es exactamente el mismo que @Repository.

9.@Anular anotación

  • Dígale al lector que este método está anulado. Se utiliza para comprobar si el método de la clase principal se anula correctamente.
  • El compilador puede verificar por usted si el nombre del método en @Override es propiedad de su clase principal y, de lo contrario, informará un error.

10.SSM

El conjunto de marcos SSM (Spring+SpringMVC+MyBatis) se compone de dos marcos de código abierto, Spring y MyBatis (SpringMVC es parte de Spring), y a menudo se utiliza como marco para proyectos web con fuentes de datos relativamente simples.

11. Cómo escribir dos puntos dobles en Java::

1. Expresión: persona -> persona.getName(); puede ser reemplazada por: Persona::getName

2. Expresión: () -> nuevo HashMap<>(); puede ser reemplazado por: HashMap::new

Insertar descripción de la imagen aquí

12. La diferencia entre solicitudes de venta y publicación

En http, put se define como un método idempotente y post no es un método idempotente.

Idempotente: un término en matemáticas. Para un método de operación de entrada única o sin entrada, si el resultado es el mismo cada vez, es idempotente. En otras palabras, si una red se ejecuta varias veces y el efecto es el mismo, es idempotente.

  • correo

    • Se utiliza para enviar solicitudes, puede actualizar o crear recursos y no es idempotente.

    • Cuando un usuario se registra, se crea una cuenta de usuario para cada envío. En este caso, use post

  • poner

    • Se utiliza para enviar recursos actualizados a la URL especificada, que es idempotente.

    • Sigue siendo un módulo de usuario, como cambiar una contraseña. Aunque se envían el nombre de la cuenta y la contraseña, cada envío solo actualiza la contraseña del usuario y cada solicitud solo sobrescribe el valor del prototipo. En este caso, use put

¿Debo usar post o put?

  • Si los resultados de múltiples llamadas a la URL correspondiente a la actualización son consistentes, use put
  • Si envía el mismo contenido cada vez y el resultado final es inconsistente, utilice publicar

Resumir

Se genera el efecto de solicitud: si la última solicitud sobrescribe la solicitud anterior, use put, y si la última solicitud se superpone a la solicitud anterior, use post.

Materiales de referencia: la diferencia entre PUT y POST - Comunidad de desarrolladores de Tencent Cloud - Tencent Cloud (tencent.com)

Comprender la publicación y publicarla en un minuto (seguridad y perspectiva idempotente)_Blog "Desconectado"-blog CSDN_¿Cuál es más seguro, publicar o publicar?

13. ¿Cuál es la diferencia entre @Component y @Bean?

  1. Los objetos de acción son diferentes: @Componentlas anotaciones actúan sobre las clases, mientras que @Beanlas anotaciones actúan sobre los métodos,
  2. @ComponentPor lo general, se detecta y ensambla automáticamente en el contenedor Spring mediante el escaneo de rutas (podemos usar @ComponentScananotaciones para definir la ruta a escanear para descubrir las clases que deben ensamblarse e instalarlas automáticamente en el contenedor Spring Bean). @BeanLas anotaciones generalmente definen el bean en el método marcado con la anotación, @Beanle dicen a Spring que se trata de una instancia de una determinada clase y me la devuelven cuando necesitamos usarla.
  3. @BeanLas anotaciones @Componentson más personalizables que las anotaciones y, en muchos lugares, solo podemos @Beanregistrar beans a través de anotaciones. Por ejemplo, cuando hacemos referencia a una clase en una biblioteca de terceros y necesitamos ensamblarla en el contenedor Spring, esto solo se puede @Beanlograr a través de .

Enlace de referencia: ¿Cuál es la diferencia entre las anotaciones Spring @bean y @component? -Zhihu(zhihu.com)

[SpringBoot: explicación detallada del uso de las anotaciones @Configuration y @Bean (implementación de clases de configuración) (hangge.com)](https://www.hangge.com/blog/cache/detail_2506.html#:~:text =1, Instrucciones de uso 1 La anotación %40Bean actúa sobre el método 2 %40Bean indica que un método devuelve un Spring, 5 El alcance predeterminado de la anotación %40Bean es el alcance singleton, que se puede establecer en el alcance del prototipo a través de %40Scope ( "prototipo")

14.La diferencia entre Controller y RestController

Lo que tienen en común: todos se utilizan para indicar si una determinada clase Spring puede recibir solicitudes HTTP.

Diferencias: @Controller: identifica una clase Spring como un procesador controlador Spring MVC, @RestController: @RestController es una combinación de @Controller y @ResponseBody, la función de combinar las dos anotaciones. Los métodos de la clase @Controller pueden saltar directamente a jsp, ftl, html y otras páginas de plantilla devolviendo String. Agregar la anotación @ResponseBody al método también puede devolver objetos de entidad. Todos los métodos de la clase @RestController solo pueden devolver objetos de entidad como String, Object y Json, y no pueden saltar a la página de plantilla.

Enlace de referencia: La diferencia entre Controller y RestController_Blog-CSDN de blog de Linux Resource Station_La diferencia entre controlador y restcontroller

MockMvc

Al realizar pruebas de integración en el módulo, esperamos probar el controlador ingresando la URL. Si iniciamos el servidor y establecemos un cliente http para la prueba, esto hará que la prueba sea muy problemática. Por ejemplo, la velocidad de inicio es lenta. la verificación de la prueba es inconveniente y la dependencia del entorno de red, etc., por lo que para probar el controlador, presentamos MockMVC.

MockMvc implementa la simulación de solicitudes Http. Puede usar directamente el formulario de red y convertirlo en la llamada del Controlador. Esto puede hacer que la prueba sea rápida y no dependa del entorno de red. También proporciona un conjunto de herramientas de verificación, lo que puede hacer que la verificación de la solicitud sea uniforme y muy conveniente.

Enlace de referencia: [Explicación detallada de MockMvc - Xingchao - Blog Park (cnblogs.com) Mi participación ] (https://www.cnblogs.com/jpfss/p/10950904.html#:~:text=MockMvc es sólido y unificado y muy conveniente.)

  • MockMvcRequestBuilders

15. La diferencia entre @Component, @Repository, @Service

Enlaces de referencia: la diferencia entre @Component, @Repository y el blog-CSDN blog_@repository de @Service_fansili

anotación significado
@Componente Los componentes más comunes se pueden inyectar en el contenedor de resortes para su gestión.
@Repositorio actuando sobre la capa de persistencia
@Servicio Actuando sobre la capa de lógica empresarial
@Controlador Actúa sobre la capa de presentación (anotaciones spring-mvc)

16. Introducción al druida

Druid es ante todo un grupo de conexiones de bases de datos. Druid es actualmente el mejor grupo de conexiones de bases de datos, superando a otros grupos de conexiones de bases de datos en términos de función, rendimiento y escalabilidad, incluidos DBCP, C3P0, BoneCP, Proxool y JBoss DataSource. Druid se ha implementado en más de 600 aplicaciones en Alibaba y ha pasado la rigurosa prueba de implementación a gran escala en entornos de producción durante más de un año. Druid es un grupo de conexiones de bases de datos desarrollado por Alibaba que requiere monitoreo.

Enlace de referencia: ¿Qué es Druid y la introducción de Druid_Un blog sobre el camino de crecimiento de un blog CSDN novato de Java_¿Para qué sirve druid?

17. Estrategia de eliminación de datos

Configuraciones relacionadas que afectan la eliminación de datos

Detectar datos volátiles (el conjunto de datos server.db[i].expires que puede caducar)

  • volatile-lru: seleccione los datos utilizados menos recientemente para eliminar
  • volatile-lfu: selecciona los datos utilizados menos recientemente y elimínalos
  • volatile-ttl: selecciona datos que están a punto de caducar y elimínalos
  • volátil-aleatorio: seleccione datos aleatoriamente para su eliminación

Insertar descripción de la imagen aquí

LFU: Seleccione los datos menos utilizados dentro de un período de tiempo para su eliminación.

LRU: seleccione los datos utilizados menos recientemente durante un período de tiempo para eliminarlos

Supongo que te gusta

Origin blog.csdn.net/D_boj/article/details/129494827
Recomendado
Clasificación