Principales preguntas de la entrevista de Spring Boot

Los desarrolladores de Java ahora están cambiando de Spring Framework a Spring Boot para desarrollar aplicaciones empresariales en una arquitectura de microservicios. Spring Boot se ha convertido en un tema de moda para preguntar en las entrevistas de desarrolladores de backend de Java en 2022.

Pasé bastante tiempo armando una lista muy completa de preguntas y respuestas para las entrevistas de primavera. Espero que esto beneficie tanto a los principiantes como a los desarrolladores experimentados en la preparación de su entrevista.

Q1. ¿Qué es Spring Boot y por qué lo necesitamos?

Spring framework se ha vuelto complicado a lo largo de los años con muchas características. La configuración inicial del proyecto Spring lleva tiempo debido a lo siguiente:

  1. Incluya todos los módulos de Spring requeridos y las bibliotecas de terceros relacionadas
  2. Tenga cuidado con la compatibilidad de la versión del módulo Spring con otros archivos jar de terceros
  3. Comprender la escritura de contexto spring xml
  4. Configurar Tomcat y web.xml para la implementación de aplicaciones web
  5. Proceso de compilación para generar jar/war y proceso de implementación
  6. Mejores prácticas para usar módulos Spring

✰ Spring Boot resuelve todos estos problemas y ayuda a crear aplicaciones Spring independientes con calidad de producción que simplemente puede ejecutar.

Spring Boot tiene una vista inteligente de la plataforma Spring y las bibliotecas de terceros para que pueda comenzar con un mínimo de molestias. La mayoría de las aplicaciones de Spring Boot requieren muy poca configuración de Spring.

Características
  1. Cree aplicaciones Spring independientes
  2. Servidor integrado (como Tomcat, Jetty o Undertow) para evitar la complejidad en la implementación de aplicaciones (archivos WAR)
  3. Proporcione dependencias "iniciales" inteligentes para simplificar la configuración de su compilación y aplicación
  4. Configurar automáticamente Spring y bibliotecas de terceros cuando sea posible
  5. Proporcione funciones listas para producción, como métricas, controles de estado y configuración subcontratada
  6. Absolutamente sin generación de código y sin requisitos de configuración XML

Q2. ¿Qué hacen las anotaciones @SpringBootApplication?

@SpringBootApplication incluye tres anotaciones ampliamente utilizadas:-

  • @EnableAutoConfiguration habilita el mecanismo de configuración automática de Spring Boot
  • @ComponentScan habilita el escaneo @Component en el paquete donde se encuentra la aplicación
  • @Configuration permite registrar beans adicionales en el contexto o importar clases de configuración adicionales

Q3. ¿Qué sucede en segundo plano cuando se ejecuta una aplicación Spring Boot?

  1. Encuentra el perfil activo e inicializa propiedades y beans basados ​​en el perfil
  2. Lanzar automáticamente un servidor Tomcat incorporado si es una aplicación web significa que el proyecto tiene spring-boot-arranque-web dependencia en pom.xml

Q4. ¿Qué es Spring Initializer?

Podemos generar rápidamente un proyecto de arranque de primavera eligiendo el idioma (Java, Kotlin, Groovy)constructor (Maven, Gradle)Versión Spring Boot, metadatos del proyecto (grupo, artefacto, nombre, descripción, nombre del paquete, versión de Java) y dependencias de arranque de primavera (spring-boot-starter-web, spring-boot-starter-jpa, etc.) usando Spring Initializer

P5. ¿Qué es spring-boot-starter-parent?

los spring-boot-starter-parent es un proyecto de inicio de primavera. Se puede usar como padre en el archivo pom.xml de nuestro proyecto:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
</parent>

el proyecto principal proporciona lo siguiente: -

  1. Versión predeterminada del compilador de Java
  2. Codificación de fuente UTF-8
  3. Gestión de dependencias heredadas de spring-boot-dependencies POM que nos permite omitir version etiqueta para dependencias comunes.
  4. Filtrado de recursos importar solo las bibliotecas de terceros requeridas según application.properties Donde application.yml
  5. Configuración predeterminada para complementos maven como maven-failsafe-plugin, maven-jar-plugin, maven-surefire-plugin, maven-war-plugin.

P6. ¿Cuál es el servidor y el puerto integrados de Spring Boot predeterminados? ¿Cómo cambiar el puerto del servidor?

Spring Boot admite servidores integrados Tomcat, Jetty y Undertow. El servidor integrado predeterminado es Matou y el puerto predeterminado es 8080.

El puerto del servidor predeterminado se puede cambiar usando server.port propiedad o argumento de línea de comando -Dserver.port.

También lea diferentes formas de cambiar el puerto del servidor en el arranque de primavera

Siempre puedes cambiar el servidor predeterminado Matou a otro servidor incorporado como muelle Donde Reflujo por:-

  1. excluyendo la dependencia de Tomcat spring-boot-starter-tomcat a partir de spring-boot-starter-web y,
  2. agregue la dependencia de otro servidor como jetty spring-boot-starter-jetty.
<!-- Exclude Spring Boot's Default Tomcat Server -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- Add Jetty Server Dependency -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

P7. ¿Qué es el inicio de sesión predeterminado en Sprint Boot? ¿Cómo cambiar el registro predeterminado?

La bota accionada por resorte proporciona regreso de sesión como registro predeterminado.

Si desea cambiar el registro predeterminado a log4j2 luego:-

  1. excluir spring-boot-starter-logging a partir de spring-boot-starter y,
  2. agregar spring-boot-starter-log4j2 adiccion
<!-- Exclude Spring Boot's Default Logback Logging -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<!-- Add Log4j2 Dependency -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

P8. ¿Cómo generar un archivo JAR y WAR desplegable en Spring Boot?

Spring boot proporciona un complemento experto spring-boot-maven-plugin para generar archivos JAR y WAR que podemos agregar en pom.xml de la siguiente manera:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
MACETA

Cuando este complemento está en su lugar, obtenemos un JAR ejecutable grande después de ejecutar la fase del paquete Maven. Este JAR contiene todas las dependencias necesarias, incluido un servidor integrado. Por lo tanto, no tenemos que preocuparnos por configurar un servidor externo.

GUERRA

Cuando queremos generar un archivo WAR, cambiamos el contenedor a guerra y modifique el alcance del servidor incorporado como a condición de en pom.xml

<!-- Set packaging to war, 
     default value is jar if not provided -->
<packaging>war</packaging>

<!-- Change the scope of embedded server as provided,
     so that WAR doesn't contain embedded server in its package -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

P9. ¿Cómo configurar propiedades en Spring Boot?

Spring Boot admite configuración externa, lo que nos permite ejecutar la misma aplicación en diferentes entornos. Podemos usar archivos de propiedades, archivos YAML, variables de entorno, propiedades del sistema y argumentos de opciones de la línea de comandos para especificar las propiedades de configuración.

Luego podemos acceder a estas propiedades usando el @Value anotación, un objeto vinculado a través de la @ConfigurationProperties anotación o abstracción del entorno.

Estas son las fuentes más comunes de configuración externa:

  • Propiedades de la línea de comandos: Los argumentos de opción de línea de comandos son argumentos de programa que comienzan con un guión doble, como --servidor.puerto=8080. Spring Boot convierte todos los argumentos en propiedades y los agrega al conjunto de propiedades del entorno.
  • Propiedades de la aplicación: Las propiedades de la aplicación son las que se cargan desde el archivo application.properties o su equivalente YAML. De forma predeterminada, Spring Boot busca este archivo en el directorio actual, la raíz de classpath o su subdirectorio de configuración.
  • Propiedades específicas del perfil: Las propiedades específicas del perfil se cargan desde el application-{profile}.properties archivo o su equivalente YAML. los {profile} marcador de posición se refiere a un perfil activo. Estos archivos se encuentran en las mismas ubicaciones que los archivos de propiedades no específicas y tienen prioridad sobre ellos.

P10. ¿Qué es el actuador de arranque por resorte?

Spring Boot Actuator proporciona una funcionalidad lista para la producción para el monitoreo y la administración de aplicaciones Spring Boot al exponer muchos puntos finales HTTP útiles relacionados con el estado de la aplicación, la información, etc.

Para habilitar el actuador en la aplicación Spring Boot, solo necesitamos incluir spring-boot-starter-actuator dependencia en el archivo pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Algunos de los puntos finales integrados más comunes proporcionados por Actuator:

  • Información: Muestra información de aplicación arbitraria
  • salud: Muestra información sobre el estado de la aplicación
  • eventos de auditoría: Expone información de eventos de auditoría
  • aprox: Expone las propiedades del medio ambiente.
  • seguimiento de http: Muestra información de seguimiento de HTTP
  • métrico: Muestra información sobre las métricas
  • grabadoras: Muestra y modifica la configuración de los registradores en la aplicación
  • asignaciones: Muestra una lista de todas las rutas @RequestMapping
  • tareas programadas: Muestra las tareas programadas en su aplicación
  • volcado de hilo: Realizar un volcado de subprocesos

P11. ¿Qué es Spring Boot Devtools?

Spring Boot DevTools, es un conjunto de herramientas que facilitan el proceso de desarrollo. Para habilitar DevTools en la aplicación Spring Boot, solo necesitamos agregar una dependencia al archivo pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

El módulo spring-boot-devtools se desactiva automáticamente si la aplicación se ejecuta en producción. El reempaquetado de archivos también excluye este módulo de forma predeterminada. Por lo tanto, no agregará gastos generales a nuestro producto final.

De forma predeterminada, DevTools aplica propiedades adecuadas para un entorno de desarrollo. Estas propiedades deshabilitan el almacenamiento en caché de plantillas, habilitan el registro de depuración para el grupo web y más. Como resultado, tenemos esta configuración sensible al tiempo de desarrollo sin configurar ninguna propiedad.

Las aplicaciones que usan DevTools se reinician cada vez que cambia un archivo en el classpath. Esta es una función muy útil en el desarrollo, ya que proporciona información rápida sobre los cambios.

De forma predeterminada, los recursos estáticos, incluidos los modelos de vista, no activan un reinicio. En cambio, un cambio de recurso desencadena una actualización del navegador. Tenga en cuenta que esto solo puede suceder si la extensión LiveReload está instalada en el navegador para interactuar con el servidor LiveReload integrado que contiene DevTools.

P12. ¿Qué significa que Spring Boot admite enlaces relajados?

El enlace suelto en Spring Boot se aplica al enlace seguro de tipos de las propiedades de configuración.

Con el enlace suelto, la clave de una propiedad de entorno no necesita ser una coincidencia exacta de un nombre de propiedad. Dicha propiedad de entorno se puede escribir en camelCase, kebab-case, snake_case o en mayúsculas con palabras separadas por guiones bajos.

Por ejemplo, si una propiedad en una clase de bean con el @ConfigurationProperties la anotación se llama mipropse puede vincular a una de estas propiedades de entorno: myProp, my-prop, my_prop o MY_PROP.

Si quieres conocer otros artículos parecidos a Principales preguntas de la entrevista de Spring Boot puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas