Preparación para la certificación profesional de primavera. Bota de primavera

Un saludo a todos. Este artículo cubrirá preguntas clave sobre el tema de "Spring Boot". Está dirigido a desarrolladores principiantes y puede ser útil para prepararse para una entrevista. Resultó ser bastante compacto en comparación con otros artículos.


Tabla de contenidos
  1. Inyección de dependencia, contenedor, IoC, frijoles
  2. AOP (programación orientada a aspectos)
  3. JDBC, Transacciones, JPA, Spring Data
  4. Bota de primavera
  5. Mvc de primavera
  6. Seguridad de primavera
  7. DESCANSO
  8. Prueba




Preguntas


¿Qué es la bota de primavera?

Spring Boot es un conjunto de módulos preconfigurados que funcionan en Spring Framework y simplifican la configuración de una aplicación Spring.


Aquí hay algunos módulos centrales:


  • Spring-boot-dependencies. Contiene dependencias de versión.
  • Spring-boot-starter-parent. Padre pom.xml
  • Spring-boot-starters. Módulo principal para principiantes
  • Spring-boot-autoconfigure. Contiene módulos para arrancadores de autoajuste
  • Actuador de arranque por resorte. Le permite monitorear la aplicación y administrar su creación.

¿Cuáles son los beneficios de Spring Boot?
  • Configura automáticamente muchos ajustes para evitar el código repetitivo
  • Le permite configurar fácilmente la aplicación cuando la configuración predeterminada no es adecuada
  • El proyecto Spring Boot puede compilarse en un archivo JAR independiente
  • Proporciona un conjunto de dependencias que ya se han probado para que funcionen correctamente entre sí.
  • Tiene contenedores web integrados que facilitan la prueba de la aplicación.

Como trabaja el ¿Cómo entiende qué y cómo configurarlo?

Asume lo que necesita en función de las dependencias en el classpath. “Acuerdo sobre configuración”: configurará automáticamente Spring con configuraciones especialmente seleccionadas, que luego se pueden anular.


Hay varias anotaciones para esto, @ConditionalOnClass , @ConditionalOnBean , @ConditionalOnMissingBean y @ConditionalOnMissingClass , que le permiten aplicar condiciones a las clases @ Configuration y a los métodos @ Bean en estas clases.


Por ejemplo:


  • Un bean solo se creará si hay una dependencia específica en el classpath.


    Use @ConditionalOnClass , estableciendo el nombre de la clase desde classpath allí.


  • Solo se creará un bean si no hay un bean de este tipo o con ese nombre en el contenedor.


    Use @ConditionalOnMissingBean , estableciendo el nombre o tipo del bean para verificar allí.



¿Qué afecta a la configuración de Spring Boot?

Hay una lista de anotaciones de condición, cada una de las cuales se utiliza para controlar la creación de beans. Aquí hay una lista de tales anotaciones (en realidad hay más):


Anotación
Condición para pasar
@ConditionalOnClass
Presencia de clase en classpath
@ConditionalOnMissingClass
Falta clase en classpath
@ConditionalOnBean
La presencia de un bin o su tipo (clase bean)
@ConditionalOnMissingBean
La falta de un contenedor o su tipo
@ConditionalOnProperty
Presencia de propiedad de primavera
@ConditionalOnResource
La presencia de un archivo de recursos
@ConditionalOnWebApplication
Si se trata de una aplicación web, se utilizará WebApplicationContext.
@ConditionalOnNotWebApplication
Si no es una aplicación web

¿Cómo se definen las propiedades? ¿Dónde se encuentra el PropertySource predeterminado en Spring Boot?

Spring Boot usa un orden especial de PropertySource para permitir anular los valores de propiedad. Aquí está el orden de las fuentes para obtener las propiedades de la aplicación:


  1. Configuración general del directorio ~ / spring-boot devtools.properties
  2. Configuración de @TestPropertySource anotación de pruebas
  3. Atributos @ SpringBootTest # propiedades
  4. Argumentos de línea de comando
  5. Propiedades de SPRING_APPLICATION_JSON
  6. Parámetros para inicializar ServletConfig
  7. Parámetros para inicializar ServletContext
  8. Atributos JNDI de java: comp / env
  9. Propiedades del sistema Java (System.getProperties ())
  10. Variables del sistema operativo
  11. RandomValueProperySource
  12. Propiedades para perfiles, por ejemplo YAML o application- {profile} .properties
  13. application.properties y yaml no de tu jar
  14. application.properties y yaml desde tu jar
  15. @PropertySource en la clase @ Configuración
  16. Propiedad por defecto (establecida a través de SpringApplication.setDefaultProperties() )

Agregue también que property.yml siempre anula property.properties.


¿Describe las principales anotaciones y configuraciones para Spring Boot?

La @SpringBootApplication proporciona 3 propiedades:


  • @EnableAutoConfiguration : habilita el mecanismo de configuración automática de Spring Boot
  • @ComponentScan : habilita la exploración de componentes en el paquete de la clase donde se encuentra
  • @Configuration : le permite registrar más. frijoles en contexto

Aquí hay otras anotaciones clave:


@EnableConfigurationProperties : le permite usar @ConfigurationProperties con la anotación @ConfigurationProperties


@ConfigurationProperties : le permite asociar archivos de archivos con contenedores


@WebMvcTest : utilizado para las pruebas Spring MVC


@SpringBootTest : se usa cuando necesita funciones Spring Boot en las pruebas


@DataJpaTest : se utiliza para probar componentes JPA


¿Cuáles son las diferencias entre un contenedor en línea y un WAR?

El contenedor integrado es el servidor que viene con la aplicación final, mientras que WAR es un archivo que puede implementarse en un servidor externo.


Los contenedores de servlets son buenos para administrar múltiples aplicaciones en el mismo host, pero no son muy útiles para administrar solo una aplicación.


Con un entorno en la nube, usar una aplicación por máquina virtual es la forma preferida y más común. Los marcos modernos quieren ser más compatibles con las nubes, por lo que están cambiando a contenedores integrados.


¿Qué contenedores integrados admite Spring?

Spring Boot es compatible con Tomcat, Jetty y Undertow.
El valor predeterminado es TomCat. Para cambiar el contenedor, simplemente agregue la dependencia deseada en pom.xml.


¿Qué hace @EnableAutoConfiguration?

Le permite usar la autoconfiguración. La configuración automática en Spring Boot intenta crear y configurar beans basados ​​en dependencias en el classpath, para permitir que el desarrollador comience a trabajar rápidamente con varias tecnologías y elimine el código repetitivo.


¿Spring Boot escanea componentes? ¿Dónde los busca por defecto?

Sí, lo hace si hay una anotación @SpringBootApplication que contiene una anotación @ComponentScanning .


Por defecto, Spring busca beans en el mismo paquete que la clase anotada. Esto puede anularse especificando clases (o paquetes) en las scanBasePackage scanBasePackageClasses o scanBasePackage .


¿Qué es Spring Boot Starter POM? ¿Cómo puede ser útil?

Los principiantes proporcionan un conjunto de descriptores de dependencia útiles que puede incluir en su aplicación. Obtiene una fuente para Spring y tecnologías relacionadas sin tener que buscar y copiar y pegar descriptores de implementación.
Por ejemplo, si desea comenzar con Spring JPA, simplemente agregue la dependencia spring-boot-starter-data-jpa a su proyecto.


Los principiantes contienen la mayoría de las dependencias que necesita para ejecutar el proyecto, funcionan de forma rápida y coherente y admiten conjuntos de dependencias transitivas.


¿Puedes controlar el registro a través de Spring Boot?

Si Por defecto, los mensajes con prioridades ERROR, WARN, INFO se mostrarán en la aplicación. Para habilitar la salida de los niveles DEBUG o TRACE, debe usar las --trace --debug / --trace o establecer las propiedades de propiedad debug / trace = true.


 logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR 

Por defecto, Sprin Boot solo inicia sesión en la consola. Si desea registrar eventos en un archivo, debe establecer las propiedades logging.file o logging.path en true (por ejemplo, en application.properties).


Registro de color


En las consolas que admiten ANSI, para mejorar la legibilidad, los mensajes de diferentes niveles se pueden resaltar con diferentes colores. Así es como se configura en el archivo de propiedades:


 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow} 

Si desea escribir fue a otros archivos, también puede configurar esto (YAML):


 logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG 

Source: https://habr.com/ru/post/471312/


All Articles