Score %0 (0 correct0 incorrect20 unanswered)

Q1. ¿Cómo se utilizan los filtros en Spring Web?

  • Los filtros se llaman antes de que una solicitud llegue al DispatcherServlet. Permiten un procesamiento encadenado de estilo de intercepción de solicitudes web para seguridad, tiempos de espera y otros propósitos.
  • Se utilizan filtros con un algoritmo de suma de comprobación que filtrará bytes inválidos de un cuerpo de solicitud de flujo de bytes y permitirá el procesamiento de solicitudes HTTP desde DispatcherRequestServlet.
  • Se utilizan filtros con un algoritmo de suma de comprobación que filtrará bytes inválidos de un flujo de octetos en una carga útil múltiple y permitirá un procesamiento encadenado de solicitudes WebDispatcherServlet.
  • Se utilizan filtros para validar los parámetros de solicitud fuera del cuerpo de la solicitud de flujo de bytes y permitir el procesamiento de solicitudes desde DispatcherRequestServlet.

Interceptores de controladores vs. Filtros en Spring MVC. Además, no existe algo como DispatcherRequestServlet en Spring.

Q2. ¿Cómo se define un recurso en el contexto de un servicio REST?

  • Un recurso es el literal de cadena real que compone un URI al que se accede en un servicio web RESTful.
  • Es un concepto abstracto que representa un objeto tipado, datos, relaciones y un conjunto de métodos que operan en él que se accede a través de un URI.
  • Un servicio REST tiene un conjunto de recursos compuesto por asignaciones de memoria que permiten procesar una solicitud.
  • Un recurso para un servicio REST es una asignación explícita de un hilo o ciclos de CPU para permitir el procesamiento de una solicitud.

Servicio REST en Spring

Q3. ¿Cuál de estos es una anotación de Advice válida?

  • @AfterError
  • @AfterReturning
  • @AfterException
  • @AfterExecution

Annotación de tipo de Advice de Spring

Q4. ¿Qué hace un ViewResolver?

  • Soporta la internacionalización de aplicaciones web mediante la detección del idioma del usuario.
  • Genera una vista mapeando un nombre de vista lógico devuelto por un método del controlador a una tecnología de vista.
  • Crea una vista única determinada por el tipo de navegador del usuario, lo que admite la compatibilidad entre navegadores.
  • Mapea parámetros personalizados a vistas SQL en la base de datos, lo que permite crear contenido dinámico en la respuesta.

Resolución de vistas en Spring MVC

Q5. ¿Cómo se implementan los repositorios de Spring Data por Spring en tiempo de ejecución?

  • Spring genera automáticamente código para usted basado en su configuración YAML que define una cadena MethodInterceptor que intercepta las llamadas a la instancia y calcula SQL sobre la marcha.
  • Se crea una instancia de proxy JDK, que respalda la interfaz del repositorio, y un MethodInterceptor intercepta las llamadas a la instancia y las enruta según sea necesario.
  • El proxy JDK de Spring crea un proceso de tiempo de ejecución separado que actúa como intermediario entre la base de datos y el servidor web, e intercepta las llamadas a la instancia y maneja las solicitudes.
  • Spring genera automáticamente código para usted basado en sus archivos de configuración XML que definen una fábrica SpringMethodAutoGeneration que intercepta las llamadas a la instancia y crea métodos dinámicos que calculan SQL sobre la marcha.

Explicación de Preguntas y Respuestas

Q6. ¿Qué es SpEL y cómo se usa en Spring?

  • SpEL (Spring Expression Language) se ejecuta en la JVM y puede actuar como un reemplazo directo de Groovy u otros lenguajes.
  • SpEL (Spring Expression Language) admite operadores booleanos y relacionales y expresiones regulares, y se utiliza para consultar un gráfico de objetos en tiempo de ejecución.
  • SpEL (Spring Expression Language) le permite construir, configurar y ejecutar tareas como la construcción de artefactos y la descarga de dependencias de objetos.
  • SpEL (Spring Expression Language) transpila nativamente un lenguaje JVM a otro, lo que permite una mayor flexibilidad.

Documentación de Expresiones de Spring

Q7. El proceso de vincular aspectos con otros objetos para crear un objeto asesorado se llama

  • encadenamiento dinámico
  • unión
  • tejido
  • intercalación

Q8. ¿Cómo se usan los proxies dinámicos JDK y los proxies CGLIB en Spring?

  • El proxy dinámico JDK puede interceptar solo interfaces, por lo que se utiliza si el objetivo implementa al menos una interfaz. Un proxy CGLIB puede crear un proxy mediante la subclase y se utiliza si el objetivo no implementa una interfaz.
  • Solo se utilizan proxies dinámicos JDK en el Ciclo de Vida de Beans de Spring. Los proxies CGLIB se utilizan solo para integrarse con otros frameworks.
  • Solo se utilizan proxies CGLIB en el Ciclo de Vida de Beans de Spring. Los proxies dinámicos JDK se utilizan solo para integrarse con otros frameworks.
  • El proxy dinámico JDK solo puede usar una clase abstracta extendida por un objetivo. Un proxy CGLIB puede crear un proxy a través del entretejido de bytes y se utiliza si el objetivo no extiende una clase abstracta.

Q9. ¿Cuál de estos no es un método válido en la interfaz JoinPoint?

  • getArgs()
  • getExceptions()
  • getSignature()
  • getTarget()

Q10. ¿En qué orden se ejecutan el método anotado con @PostConstruct, el método del parámetro init-method en los beans y el método afterPropertiesSet()?

  • 1. afterPropertiesSet() 2. init-method 3. @PostConstruct
  • 1. @PostConstruct 2. afterPropertiesSet() 3. init-method
  • 1. init-method 2. afterPropertiesSet()
  1. @PostConstruct
  • No puedes usar estos métodos juntos, debes elegir solo uno.

Q11. ¿Cuál es la función de la anotación @Transactional a nivel de clase?

  • Es un atributo de transacción configurado por el archivo de configuración spring.security.transactions.xml que utiliza la implementación de transacción y el código de validación de Spring.
  • Es una transacción que debe validar activamente por el bytecode de una transacción usando la clase TransactionBytecodeValidator de Spring. El comportamiento de transacción predeterminado se revierte en caso de excepción de validación pero se compromete en caso de validación adecuada.
  • Crea un proxy que implementa la misma interfaz(es) que la clase anotada, lo que permite a Spring inyectar comportamientos antes, después o alrededor de las llamadas a métodos en el objeto que se está proxificando.
  • Es una transacción que debe ser validada activamente por la clase TransactionValidator de Spring usando el código de validación de transacción de Spring. El comportamiento de transacción predeterminado se revierte en caso de excepción de validación.

Q12. ¿Cuál es un ejemplo válido del resultado de este código (ignorando las declaraciones de registro)?

@SpringBootApplication
public class App {
     public static void main(String args[]) {
          SpringApplication.run(App.class, args);
          System.out.println("startup");
     }
}

public class Print implements InitializingBean {
     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println("init");
     }
}
  • No se imprimirá nada
  • startup init
  • init
  • startup

Explicación: El método SpringApplication.run devuelve el Contexto creado, por lo que el método main seguirá ejecutándose e imprimirá "startup". La clase Print no es un Bean de Spring, porque no está anotada con @Component, por lo que no se inicializará.

Q13. ¿Qué declaración println eliminaría para evitar que este código arroje una excepción de puntero nulo?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;
     @Autowired
     static SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter") + " ");
          System.out.println(context.getBean("formatter").getClass());
          System.out.println(formatter.getClass());
          System.out.println(context.getClass());
     }
}

@Configuration
class TestConfig {
     @Bean
     public SimpleDateFormat formatter() {
          return new SimpleDateFormat();
     }
}
  • formatter.getClass()
  • context.getClass()
  • context.getBean("formatter").getClass()
  • context.containsBean("formatter")

Q14. ¿Cuál es la interfaz raíz para acceder a un contenedor de beans de Spring?

  • SpringInitContainer
  • ResourceLoader
  • ApplicationEventPublisher
  • BeanFactory

Q15. ¿Qué anotación se puede usar dentro de Spring Security para aplicar seguridad a nivel de método?

  • @Secured
  • @RequiresRole
  • @RestrictedTo
  • @SecurePath

Q16. ¿Cuál es el resultado de llamar al método controlador de map utilizando la solicitud HTTP GET localhost:8080/map?foo=foo&bar=bar ?

@RestController
public class SampleController {

     @RequestMapping("/map")
     public String map(@RequestParam("bar") String foo, @RequestParam("foo") String bar) {
          return bar + foo;
     }
}
  • Se lanza una excepción InvalidParameterNameMappingException en tiempo de ejecución.
  • barfoo
  • foobar
  • Se devuelve un código de estado 400 Bad Request.

Q17. ¿Cuál es el propósito de la anotación @Lazy y por qué la usarías?

  • Evita que un bean se cree e inyecte hasta que ejecute un comando CLI específico. Reduce la complejidad en la aplicación.
  • Se puede aplicar a un bean para que el bean no se persista en la base de datos. Reduce el número de operaciones en la base de datos.
  • Se puede aplicar a un bean para que el bean no se cree e inyecte hasta que sea necesario. Puede ayudar a acelerar el tiempo de inicio de su aplicación.
  • Evita que un bean se cree e inyecte hasta que reciba una solicitud HTTP a un gancho de devolución de llamada. Reduce la huella de disco.

Q18. ¿Qué es la inyección de dependencias?

  • un método mediante el cual los objetos definen dependencias que necesitan como abstracciones que permiten que el framework los instancie y configure en un lugar central en tiempo de ejecución.
  • un paradigma donde el código dependiente se inyecta en el bytecode de una aplicación Java en un servidor remoto.
  • una forma de inyectar dependencias remotas en un archivo JAR preempaquetado desde el sistema de archivos.
  • una forma de inyectar dependencias remotas en un archivo WAR preempaquetado desde el sistema de archivos.

Q19. ¿Qué es un servicio web RESTful?

  • Transferencia de Estado de Empresa Reactiva es un servicio web que comprende un conjunto de pautas y restricciones técnicas para servicios web que monitorean y alertan de un conjunto de recursos críticos para la misión.
  • Transferencia de Estado Representacional es un estilo arquitectónico para crear servicios web que incluye arquitectura cliente-servidor, ausencia de estado, capacidad de almacenamiento en caché, un sistema en capas y una interfaz uniforme.
  • Transferencia de Estado Enumerado Redundante es un servicio web que proporciona redundancia en caso de falla y describe restricciones técnicas para servicios web que tienen acceso a recursos.
  • Transferencia de Estado de Empresa Reactiva es un servicio web que comprende un conjunto de pautas y restricciones técnicas para servicios web que tienen acceso a recursos y son asincrónicos por naturaleza.

Q20. ¿Qué sucede cuando una clase está anotada con la anotación @Controller?

  • Se define una definición de bean de controlador en el WebApplicationContext del servlet. La clase se marca como un componente web y puede asignar solicitudes a métodos del controlador.
  • Se define una definición de bean de controlador en el Contexto Web, y el Servlet Web se marca como un componente que lee solicitudes de controlador asignadas desde un archivo de configuración XML.
  • Se define una definición de bean de controlador en el Contexto de Tomcat, y el Servlet de Controlador se marca como un

componente web que lee solicitudes de controlador asignadas desde un archivo de configuración YAML.

  • Se define una definición de bean de controlador en el Contexto del Servlet, y el Servlet de Controlador se marca como un componente que lee solicitudes de controlador asignadas desde un archivo de configuración XML.