Varias preguntas de la entrevista sobre botas de primavera.

Pregunta de la entrevista 1: ¿Qué es Spring Boot y cuáles son sus características principales?

Respuesta: Spring Boot es un nuevo marco proporcionado por el equipo de Pivotal y está diseñado para simplificar el proceso inicial de construcción y desarrollo de nuevas aplicaciones Spring. El marco utiliza un enfoque ad hoc para la configuración, lo que elimina la necesidad de que los desarrolladores definan configuraciones estándar. Las aplicaciones Spring Framework a nivel de producción se pueden desarrollar muy rápidamente utilizando Spring Boot.

Las principales ventajas de Spring Boot incluyen:

  • Crear una aplicación Spring independiente
  • Incruste Tomcat, Jetty o Undertow para ejecutarlo directamente
  • Proporcionar dependencias 'iniciales' obstinadas para simplificar la configuración de compilación.
  • Configurar automáticamente bibliotecas Spring y de terceros
  • Proporciona monitoreo a nivel de producción, controles de estado y configuración externalizada.
  • Sin generación de código, no es necesario escribir XML

Pregunta de la entrevista 2: ¿Qué es Spring Boot Starter? ¿Qué Spring Boot Starters ha utilizado?

Respuesta: Spring Boot Starter es un conjunto de descriptores de dependencia convenientes que se pueden incluir en las aplicaciones Spring Boot. Estos descriptores de dependencia le permiten agregar todas las tecnologías Spring y relacionadas que necesita en un solo lugar, sin tener que buscar código de muestra y copiarlo en su proyecto.

Algunos iniciadores Spring Boot de uso común incluyen:

  • spring-boot-starter-web: para crear aplicaciones web, utilizando Tomcat como contenedor integrado predeterminado
  • spring-boot-starter-data-jpa: para interactuar con bases de datos relacionales utilizando Spring Data JPA
  • spring-boot-starter-security: para agregar funciones de seguridad usando Spring Security
  • spring-boot-starter-test - para probar con Junit, Hamcrest y Mockito
  • spring-boot-starter-actuator: funcionalidad para agregar monitoreo y métricas de nivel de producción

He utilizado spring-boot-starter-web, spring-boot-starter-data-jpa, spring-boot-starter-security, etc. en mis proyectos.

Pregunta de la entrevista 3: ¿Cómo implementar el manejo de excepciones global en las aplicaciones Spring Boot?

Respuesta: Hay varias formas de implementar el manejo de excepciones global en Spring Boot:

  1. Defina una clase de manejo de excepciones global a través de la anotación @ControllerAdvice, que puede contener algunos métodos anotados con @ExceptionHandler para manejar excepciones específicas.

  2. Implemente la interfaz HandlerExceptionResolver de Spring y agregue un controlador de excepciones personalizado al contexto de la aplicación.

  3. La anotación @RestControllerAdvice se puede utilizar para crear un componente de manejo de excepciones global que se aplica a todos los controladores anotados con @RequestMapping.

Aquí hay un ejemplo usando @RestControllerAdvice:

@RestControllerAdvice
public class GlobalExceptionHandler {
    
    

  @ExceptionHandler(value = Exception.class)
  public ResponseEntity<ErrorInfo> defaultErrorHandler(Exception e) {
    
    
    // 处理异常,返回ErrorInfo
  }

  @ExceptionHandler(value = {
    
    NullPointerException.class, IndexOutOfBoundsException.class})
  public ResponseEntity<ErrorInfo> specialErrorHandler(Exception e) {
    
      
    // 处理特定异常
  }
}

Pregunta de la entrevista 4: ¿Cómo implementar tareas programadas en Spring Boot?

Respuesta: Spring Boot proporciona varias formas diferentes de implementar tareas programadas:

  1. Usando la anotación @Scheduled de Spring, puede agregarla a cualquier método de bean administrado por Spring.

  2. Utilice la anotación @EnableScheduling para habilitar las tareas programadas y luego agregue la anotación @Scheduled.

  3. Implemente un grupo de subprocesos personalizado de la interfaz Spring TaskExecutor para un control de ejecución más detallado.

  4. Utilice el Quartz Scheduler integrado proporcionado por Spring Boot para programar tareas basadas en expresiones Cron.

A continuación se muestra un ejemplo sencillo que utiliza la anotación @Scheduled:

@Component
public class ScheduledTasks {
    
    

  @Scheduled(fixedRate = 1000)
  public void scheduleTask() {
    
    
    // 定时任务逻辑
  }
}

Pregunta de la entrevista 5: ¿Cómo implementar llamadas asincrónicas en aplicaciones Spring Boot?

Respuesta: Spring Boot proporciona las siguientes formas de implementar llamadas asincrónicas:

  1. Usando la anotación @Async, que se puede usar en cualquier método Spring Bean, el método se ejecutará de forma asincrónica.

  2. Utilice la anotación @EnableAsync para habilitar la función de llamada asincrónica y úsela junto con la anotación @Async.

  3. Implemente la interfaz invocable de Java, encapsule la lógica de ejecución asincrónica en ella y luego envíela al TaskExecutor de Spring.

  4. Utilice la anotación @AsyncResult de Spring para devolver un resultado de ejecución asincrónica.

  5. Utilice DeferredResult para encapsular los resultados de la ejecución asincrónica.

A continuación se muestra un ejemplo que utiliza la anotación @Async:

@Service
public class AsyncService {
    
    

  @Async
  public void asyncMethod() {
    
    
    // 执行异步逻辑
  } 
}

Llamador:

@Autowired
private AsyncService service;

service.asyncMethod(); // 此方法会异步执行

Pregunta de la entrevista 6: ¿Qué es Spring Boot Actuator y cuáles son sus funciones principales?

Respuesta: Spring Boot Actuator es un subproyecto proporcionado por Spring Boot y proporciona una serie de puntos finales REST para monitorear y administrar aplicaciones Spring Boot. Utilice Actuator para ver el estado interno y las estadísticas de su aplicación en tiempo real mientras se ejecuta.

Las principales funciones del Actuador incluyen:

  • Verificación del estado de la aplicación: proporciona información sobre el estado de la aplicación, espacio en disco, conexiones de bases de datos, etc.

  • Monitoreo de métricas: métricas de tiempo de ejecución como uso de memoria, recuentos de solicitudes HTTP, etc.

  • Configuración externalizada: vea y actualice la información de configuración de la aplicación.

  • Auditoría: audite los registros de acceso a las aplicaciones, los registros de errores, etc.

  • Supervisión de métodos asincrónicos: supervise la información de ejecución de los métodos asincrónicos.

  • Integre sistemas de monitoreo externos como Graphite y Zipkin.

Para usar Actuator, debe agregar la dependencia spring-boot-starter-actuator al proyecto.

Pregunta de la entrevista 7: ¿Cómo implementar el almacenamiento en caché en Spring Boot?

Respuesta: Spring Boot proporciona múltiples implementaciones de caché que se pueden integrar fácilmente a través de dependencias iniciales:

  1. Utilice spring-boot-starter-cache para integrar Spring Cache e implementar el almacenamiento en caché mediante las anotaciones @EnableCaching y @Cacheable.

  2. Integre Redis usando spring-boot-starter-data-redis, usando clientes Spring Data Redis y Lettuce como proveedores de caché.

  3. Utilice spring-boot-starter-data-couchbase para integrar Couchbase como caché.

  4. Utilice spring-boot-starter-hazelcast para integrar Hazelcast como una implementación de caché distribuida.

  5. Utilice spring-boot-starter-jcache para integrar el proveedor de caché estándar JSR-107 (JCache).

Aquí hay un ejemplo usando Spring Cache:

@Service
@CacheConfig(cacheNames="books") 
public class BookService {
    
    

  @Cacheable
  public Book getBook(ISBN isbn) {
    
    
    // 缓存逻辑
  }
}

Pregunta de la entrevista 8: ¿Cómo integrar Swagger en Spring Boot para implementar la documentación API?

Respuesta: Puede integrar Swagger para generar documentos API de la aplicación Spring Boot mediante los siguientes pasos:

  1. Agregue las dependencias de Swagger springfox-swagger2 y springfox-swagger-ui.

  2. Cree una clase de configuración Swagger y use la anotación @EnableSwagger2 para habilitar Swagger.

  3. Utilice anotaciones Swagger como @Api, @ApiOperation, etc. para anotar clases y métodos de controlador.

  4. Visite /swagger-ui.html para ver la documentación de API generada automáticamente.

  5. La información personalizada del documento, como título, descripción, versión, etc., se puede configurar a través de Swagger.

A continuación se muestra una clase de configuración de ejemplo:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    
    

  @Bean
  public Docket api() {
    
    
    return new Docket(DocumentationType.SWAGGER_2)
      .select()
      .apis(RequestHandlerSelectors.any())
      .paths(PathSelectors.any())
      .build();
  }
}

おすすめ

転載: blog.csdn.net/orton777/article/details/131852763