Notas de estudio del marco de primavera / esquema de revisión

Puntos de conocimiento del día 03-01


1. Empuje nuestro proyecto a la plataforma Gitee a través de Git en IDEA
  • De dos formas (sin compartición de almacén, empuje de almacén existente)
2. Análisis de preguntas frecuentes (FAQ)
  • El proceso de envío se rechaza (la cuenta es incorrecta o el correo es una cuenta oculta, el nombre del almacén no sigue las reglas y el almacén remoto tiene un archivo Léame al presionar)
  • ¿Qué operaciones de Git necesitamos antes de empujar (agregar, confirmar)?
  • ¿Podemos solo empujar el módulo de proyecto especificado al empujar (no confirme el módulo que no está empujado)
  • Se pueden colocar diferentes proyectos en el mismo almacén remoto (no es posible), y diferentes proyectos con diferentes bibliotecas locales también corresponderán a diferentes almacenes remotos.
3. Clona el proyecto remoto al local a través de Git.
  1. Método de clonación (a través de la opción de clonar en idea, a través de la herramienta Git Bash basada en el comando git clone)
  2. Análisis de preguntas frecuentes
    2.1. ¿Cómo ejecutar el proyecto clonado? (Jdk, maven, rebuild, out, mark as source root)
    2.2. ¿Se puede asignar un nuevo nombre al proyecto clonado? (Sí)
    2.3. Usar git directamente Cómo abrir el proyecto clonado por el comando clonar? (Basado en la opción archivo / abrir en el menú de ideas)
4. Creación y análisis estructural del proyecto SpringBoot en Idea
  1. Creación de proyectos (Spring Initializr-Ultimate Edition, Spring Assistant-Community Edition, ...)
  2. Análisis de la estructura del proyecto (pom.xml, src / main / java, src / main / resources, src / test / java, ...)
  3. ¿Análisis del proceso de inicio del proyecto? (Hilo / io -> (Disco-> memoria de carga) -> Objeto de clase-> Configuración de lectura y almacenamiento -> BeanFactory -> Crear instancia -> Instancia de almacenamiento)

Día03-02 Análisis preliminar de la práctica empresarial de ingeniería de Spring Boot

1. Análisis de antecedentes

En el proyecto Spring Boot, ¿cómo funciona la integración de recursos y la aplicación de nuestras propias clases, y de qué manera las simplificó?

2. Diseño comercial preliminar
  1. Cree una clase empresarial (por ejemplo, DefaultCache)
  2. Entregue las clases de negocios a Spring para su gestión (cómo Spring descubre estas clases)
  3. Obtenga objetos de Spring y realice pruebas de la aplicación (según la implementación de la prueba unitaria)
¿PREGUNTAS MÁS FRECUENTES?
  1. ¿La clase de negocio creada tiene requisitos para los paquetes? (Debe colocarse en el directorio src / java / main, en el paquete o subpaquete donde se encuentra la clase de inicio)
  2. ¿Cómo deben describirse nuestras clases de negocios cuando se entregan a Spring para su gestión? (Describa con las anotaciones que describen los beans definidos en el marco de Spring)
  3. ¿Por qué necesitamos entregar la instancia de la clase a la gerencia de Spring? (Spring puede darle a este objeto de frijol más características científicas)
  4. ¿Cuáles son los requisitos para escribir la clase de prueba unitaria en el proyecto Springboot? (Directorio, paquete, anotación)
    4.1) Directorio: src / test / java
    4.2) Paquete: el paquete o subpaquete donde se encuentra la clase de inicio (no el src / directorio principal / java)
    4.3) Comentario: (@ SpringBootTest, @ Test-org.junit.jupiter.api.Test)
  5. ¿Cómo entender la relación de Has a en el proyecto? (Dependencia -> Contiene -> Hay uno -> Hay otro tipo de atributo en la clase)
  6. ¿La relación entre la clase y la clase a partir de la cual podemos empezar a comprender varios métodos? (es a, tiene a, usa a)
    6.1) es a (extiende, implementa)
    6.2) tiene (tiene uno)
    6.3) usa a (usa)
¿Bicho?
  1. NullPointerException (NPE-Null Pointer Exception)
  2. UnsatisfiedDependencyException (excepción de inyección de dependencia)
  3. NoSuchBeanDefinition (no se encontró el objeto Bean correspondiente)
  4. ParameterResolutionException (el método de prueba de unidad de excepción de resolución de parámetros agrega parámetros)
3. Resumen
  1. A través de esta aplicación de introducción al negocio, hemos dominado cómo escribir nuestras propias clases en SpringBoot y lo hemos entregado a la gerencia de Spring y hemos entendido algunos problemas y soluciones que pueden ocurrir durante la operación.
  2. Al mismo tiempo, la conciencia de la conveniencia que brinda el proyecto springboot para la realización de nuestro negocio (no necesito preocuparme por las dependencias yo mismo, y no hago la configuración básica) nos permitió enfocarnos más en la realización del negocio. .

Day03-03 Las características principales del objeto Bean en el proyecto Spring Boot

1. Información de antecedentes
  1. En el caso de las computadoras, ¿la "informática" es uno de los problemas centrales que quiere resolver? Cómo hacer que los cálculos sean más "eficientes" y "de bajo consumo"
  2. Este es también un objetivo directo que nuestros programadores deben considerar en el proceso de programación. En el proyecto Spring, los objetos se entregan a Spring para su administración. El propósito es permitir que Spring les dé a estos objetos características más científicas, y luego hacer que los objetos sean más eficiente y eficaz en memoria. Operación de bajo costo
2. ¿Cuál es el análisis característico de Bean en Spring?

Se dan muchas características científicas a nuestros objetos Bean en el marco de Spring, tales como:

  1. Carga diferida (creación de objetos retrasada): esta función reduce los problemas de ocupación de recursos (algunos objetos grandes que no se utilizan temporalmente, considere utilizar esta función)
  2. Alcance (deje que el objeto se almacene en el alcance especificado y luego se reutilice para mejorar el rendimiento del acceso)
  3. Método del ciclo de vida (el objeto se puede inicializar y el recurso se puede destruir antes de crearlo y destruirlo)

Con base en estas características, nuestros objetos en el proyecto sping pueden resolver algunos problemas comerciales de manera más eficiente.

3. ¿Cuáles son las prácticas de aplicación de las características de Bean en Spring?
  1. Crear módulo de proyecto
  2. Construir un objeto de grupo de objetos cuyo tipo sea ObjectPool? (Similar al grupo de cadenas, grupo de enteros, grupo de subprocesos, grupo de conexiones, ...)
  3. Pruebe y analice el grupo de objetos a través de la clase de prueba unitaria
¿PREGUNTAS MÁS FRECUENTES?
  1. ¿Cómo diseñar el objeto de la piscina para permitir que el objeto de la piscina sirva a nuestro negocio? (Bajo consumo, alta eficiencia)
  2. ¿Qué patrón de diseño se aplicará al diseño de objetos generales de la piscina? (Patrón de peso mosca: el diseño se centra en la reutilización de objetos)
  3. ¿La carga diferida en Spring significa que la clase no se carga temporalmente en la memoria? (No, no se crea ninguna instancia de la clase temporalmente después de que la clase se carga en la memoria)
  4. ¿Cuándo se crean instancias de objetos de carga diferida en Spring? (Cuando se usa)
  5. ¿Cuál es el enfoque de la función de carga diferida en Spring para resolver? (Problema de consumo de recursos)
  6. ¿Cómo entender el alcance de los objetos en Spring? (Un problema de categoría de aplicación de objetos)
  7. Clase de ámbito único, la instancia del mismo nombre tiene solo una copia en la memoria (se almacenará en el grupo de objetos de Spring) y se puede reutilizar.
  8. ¿Cómo admiten las clases de ámbito Singleton la carga diferida? (Descrito con la anotación @Lazy)
  9. ¿Las clases con ámbito de prototipo admiten la carga diferida de forma predeterminada? (Soporte, el valor predeterminado es crear cuando se usa, no es necesario usar la descripción de la anotación @Lazy)
  10. ¿Se crea la instancia de la clase de ámbito prototipo cada vez que se solicita desde el marco de Spring?
  11. Cada objeto del programa tiene un ciclo de vida, pero ¿no es necesario definir un método de ciclo de vida?

Día03-04 Análisis de inyección de dependencia de Bean en el proyecto Spring Boot

1. Análisis de antecedentes
  1. Además de resolver el consumo de recursos del objeto y el rendimiento de la aplicación del objeto, el marco de Spring también debe considerar la capacidad de mantenimiento y la escalabilidad del objeto.
  2. Si desea considerar esta característica, ¿cómo implementarla? En los programas generales, dicha característica se implementará por herencia o composición, pero la herencia o la composición no se pueden separar del acoplamiento. ¿Cómo reducir este acoplamiento?
2.Análisis de la inyección de dependencia en el proyecto Spring?
  • El marco Spring es un marco de integración de recursos.Para reducir el acoplamiento entre clases y mejorar la escalabilidad de sus programas, se recomienda que cuando exista acoplamiento, se debe acoplar a la interfaz o fábrica tanto como sea posible (la capa inferior de la creación de objetos en nuestro proyecto ahora está acoplado. Spring's BeanFactory factory), y la inyección de valor específico (DI) se completa con el marco de Spring.
3. Diseño empresarial e implementación de la inyección de dependencias en el proyecto Spring
  1. Crear módulo de proyecto
  2. Crear caché de interfaz empresarial (com.cy.pj.common.cache.Cache)
  3. Cree clases de implementación de interfaz empresarial SoftCache, WeakCache.
  4. La clase de prueba unitaria CacheTest se define y se acopla a la interfaz Cache, y luego Spring completa la inyección del valor de la interfaz.
¿PREGUNTAS MÁS FRECUENTES?
  1. Cuando la anotación @Autowire describe propiedades, ¿cuáles son las reglas de inyección de dependencia?
    Respuesta:
    1.1. Cuando el marco de Spring detecta que hay propiedades en los beans administrados por él que se describen con anotaciones @Autowired, buscará los tipos de propiedad correspondientes desde el objeto Bean contenedor de primavera (este proceso se llama búsqueda de dependencia-DL), si solo hay uno, se inyectará directamente.
    1.2. Si hay varios, se compararán según el nombre del atributo y el nombre del bean. Si hay una coincidencia, se inyectará directamente y no hay coincidencia. Se lanza una excepción (excepción de inyección de dependencia)
    1.3. Por supuesto, también podemos usar la anotación @Qualifier con la anotación @Autowired para especificar el nombre del frijol que se inyectará.

  2. ¿En qué tecnología se implementa la inyección de dependencia (DI) en Spring?
    Respuesta: Tecnología de reflexión

  3. Hay una idea de diseño en el proceso de aprendizaje de Spring, que se llama IOC (Inversión de control). ¿Cómo realizar la inversión de control?
    Respuesta: Puede usar DI

Análisis de
errores : 1.NoUniqueBeanDefinitionException (la definición de bean no único)


tarea

Auto-resumen
  1. Definición de frijol en el proyecto SpringBoot?
  2. ¿Cuáles son las características del objeto Bean en el proyecto SpringBoot? ¿Cuáles son los beneficios de estas características?
  3. ¿Cómo implementa el proyecto SpringBoot la inyección de dependencia? ¿Cuáles son las reglas de inyección cuando la anotación @Autowired describe atributos?
  4. ¿Cómo el proyecto springboot se da cuenta de la integración y aplicación del grupo de conexiones hikaricp?

Day04-01 Aplicación del grupo de conexiones HikariCP en el proyecto SpringBoot


Notas de referencia

  1. Análisis de antecedentes Cuando
    accedemos a la base de datos, necesitamos establecer una conexión con la base de datos a través del protocolo TCP. Una vez utilizada la conexión, la conexión debe liberarse. El
    protocolo TCP es un protocolo orientado a la conexión. El establecimiento de la conexión requiere tres apretones de manos, y la liberación de la conexión requiere cuatro ondas. Este
    proceso lleva más tiempo. Si accede con frecuencia a la base de datos, establecerá directamente una conexión con los datos en todo momento, lo que traerá grandes
    problemas de rendimiento. para resolver tales problemas? Nació el pool de conexiones.

  2. ¿Qué tipo de pool de conexiones?
    Connection pool es una aplicación de pensamiento pooling. Se implementa en base al modelo Flyweight , que consiste en abrir un área en la memoria y almacenar las conexiones creadas, para que estas conexiones puedan ser reutilizadas, mejorando así la rendimiento de acceso de la base de datos.

  3. La realización del pool de conexiones
    en Java ? La realización de todos los pools de conexiones en Java (c3p0, dbcp, druid, hikariCP, ...) debe cumplir con una especificación de diseño en java. Esta especificación es javax.sql.DataSource. La conexión El pool se obtiene a través de esta especificación La realización concreta de, y luego se obtiene la conexión para realizar la comunicación con la base de datos.

¿PREGUNTAS MÁS FRECUENTES?
  1. ¿Qué necesita para establecer una conexión con la base de datos en Java?
    Respuesta: controlador de base de datos
  2. ¿Este diseño basado en bases de datos debe cumplir con alguna especificación?
    Respuesta: JDBC
  3. Después de que obtengamos una conexión a través de la API de JDBC, ¿se devolverá la conexión al grupo después de que finalice la aplicación?
    Respuesta:
  4. ¿Existe alguna desventaja en la aplicación del grupo de conexiones?
    Respuesta: Traerá una cierta cantidad de memoria y el espacio se intercambia por tiempo.
  5. Si tuviera que diseñar un grupo de conexiones ahora, ¿qué problemas consideraría?
    5.1) Estructura de almacenamiento (matriz -> el acceso aleatorio es más eficiente, lista enlazada adecuada para inserción y eliminación aleatoria)
    5.2) Algoritmo (FIFO, FILO, .. .)
    5.3) Seguridad de subprocesos (la granularidad de bloqueo-bloqueo afectará el rendimiento y la concurrencia)
    5.4) El diseño de los parámetros (cuántas conexiones hay como máximo, cuándo se liberarán las conexiones en exceso, ...)
4. La implementación de entrada de HikariCP en el proyecto SpringBoot

HikariCP se conoce actualmente como el grupo de conexiones con mejor rendimiento del mundo, y la implementación de la configuración predeterminada también se proporciona en el proyecto SpringBoot. Análisis de los pasos específicos de la aplicación:

  1. Crear módulo de proyecto
  2. Agregue las dependencias del proyecto (controlador mysql, spring data jdbc)
  3. Configurar los parámetros de conexión (url, nombre de usuario, contraseña, ...)
  4. Escriba una clase de prueba unitaria para probar unitariamente el grupo de conexiones
¿PREGUNTAS MÁS FRECUENTES?
  1. ¿Quién es el objeto específico al que apunta la variable DataSource en el programa en tiempo de ejecución?
  2. ¿Cuál es el proceso básico para obtener una conexión basada en el objeto DataSource en el programa?
  3. ¿Quién es el objeto de grupo de conexiones específico en el producto de conexión HikariCP?
  4. ¿Por qué el rendimiento de ejecución del grupo de conexiones HikariCP es bueno y de qué manera se ha optimizado?
Bicho
  1. SqlException (acceso denegado para el usuario -> acceso denegado)
  2. CommunicationException (falla de comunicación, verifique si se inició el servicio de la base de datos)
  3. El atributo 'Url' no está especificado (la URL no está configurada o configurada incorrectamente)
  4. Unknow Host'dbgoods '(verifique si hay una base de datos dbgoods en la base de datos)
4. Implementar un servicio JDBC basado en el grupo de conexiones HikariCP en el proyecto SpringBoot
  1. ¿Descripción de la empresa? (Consultar la información del producto de la base de datos y realizar una salida específica en la clase de prueba)
  2. ¿Diseño de API? (GoodsDao, DefaultGoodsDao, GoodsDaoTests)
  3. ¿Diseño de acceso de tiempo? (GoodsDaoTest–> GoodsDao–> DefaultGoodsDao–> DataSource–> HikariDataSource-> HikariPool-> Connection–> JDBC)
  4. ¿La implementación específica del código? (GoodsDao, DefaultGoodsDao, GoodsDaoTests)
  5. La implementación específica del código JDBC es la siguiente:
    5.1) Establecer una conexión (obtener un objeto Connection del grupo)
    5.2) Crear una declaración (enviar SQL basado en este objeto)
    5.3) Enviar SQL para realizar operaciones de consulta
    5.4) Procesar los resultados de la consulta, almacenar los resultados Lista <Mapa <Cadena, Objeto >>
    5.5) Liberar recursos
¿PREGUNTAS MÁS FRECUENTES?
  1. ¿De dónde se obtiene el objeto del elemento de datos DataSource?
    Respuesta: Spring realiza la inyección de valor
  2. Si el valor del objeto DataSource es nulo, ¿cuál es el motivo?
    Respuesta: ¿Hay alguna descripción de anotación de característica?
  3. Cuando se mapea el conjunto de resultados, ¿quién es la clave en el mapa?
    Respuesta: nombre del campo
  4. Cuando el objeto Mapa almacena datos, si la clave es la misma, ¿se sobrescribirá el valor?
    Respuesta:
  5. ¿Están las claves en el objeto HashMap en orden?
    Respuesta: Desordenado, el orden de adición no está garantizado
  6. ¿Existe alguna regla cuando se liberan los recursos?
    Respuesta: Crear primero y luego cerrar
  7. ¿Sabes qué son los metadatos?
    Respuesta: Los datos que describen los datos, para una tabla, los metadatos son el nombre del campo.
  8. ¿Está utilizando una especificación o una implementación de especificación al crear una aplicación JDBC? (
    Respuesta: Especificación, Conexión, Declaración, Conjunto de resultados, ...
¿Bicho?
  1. SQLException? (Problema de sintaxis SQL)
  2. NullPointerException (excepción de puntero nulo)

Día04-02 Aplicación del framework MyBatis en el proyecto SpringBoot.

Notas de referencia

  1. Descripción general de MyBatis
  • Es un excelente marco de capa de persistencia. Capa persistente
    : La capa de objetos (DAO) responsable de almacenar objetos en la memoria en la base de datos.
  • La mayor ventaja es que
    puede implementar rápidamente operaciones de datos en la base de datos a bajo costo
    2.1) Código abierto (gratis-bajo costo)
    2.2) Simple (pasos de operación, mapeo de parámetros, mapeo de resultados)
    2.4) Flexible (SQL dinámico-puede adaptarse mejor a diferente Demanda, si, ...)
    2.5) Estable (sin errores en tres días)
  1. ¿Cuál es la arquitectura de la aplicación del marco MyBatis?
    1) DAO (objeto de acceso a datos escrito por usted mismo; este objeto debe llamar a la especificación mybatis-SqlSession)
    2) API MyBatis (estándar, implementación de la especificación, encapsula la operación JDBC)
    3 ) API JDBC (especificación: definición oficial de Java)
    4) Controlador (implementación de la especificación JDBC, los proveedores de bases de datos proporcionan su controlador)

  2. Inicio rápido de la aplicación MyBatis en el proyecto SpringBoot
    1) Crear módulo de proyecto
    2) Agregar dependencias de proyecto (mysql, spring data jdbc, mybatis)
    3) Configuración inicial del proyecto (url, nombre de usuario, contraseña, mapeadores-ubicaciones)
    4) Construir clase de prueba de unidad , ¿Probar y analizar el entorno básico de mybatis? (Obtenga el objeto sqlSession en la clase de prueba y obtenga la conexión basada en este objeto)

¿PREGUNTAS MÁS FRECUENTES?
  1. ¿Cómo entender SqlSession?
    Respuesta: Un objeto de entrada que implementa una sesión con la base de datos en mybatis
  2. ¿Quién es la implementación específica de la especificación SqlSession durante la prueba?
    Respuesta: SqlSessionTemplate
  3. ¿Creamos el objeto SqlSessionFactory nosotros mismos durante la prueba?
    Respuesta: No, el proyecto springboot se crea en la parte inferior del cuadro
  4. Cuando el objeto SqlSession obtiene una conexión, ¿de dónde proviene la conexión?
    Respuesta: El objeto de grupo de conexiones asociado con HikariDataSource

Supongo que te gusta

Origin blog.csdn.net/weixin_40597409/article/details/112733198
Recomendado
Clasificación