stringtranslate.com

Marco de primavera

Spring Framework es un marco de aplicación y un contenedor de control de inversión para la plataforma Java . [2] Las características principales del marco pueden ser utilizadas por cualquier aplicación Java, pero existen extensiones para crear aplicaciones web sobre la plataforma Java EE (Enterprise Edition). El marco no impone ningún modelo de programación específico . [ cita necesaria ] . El marco se ha vuelto popular en la comunidad Java como una adición al modelo Enterprise JavaBeans (EJB). [3] Spring Framework es un software gratuito y de código abierto . [4] : 121–122  [5]

Historial de versiones

La primera versión fue escrita por Rod Johnson , quien lanzó el marco con la publicación de su libro Expert One-on-One J2EE Design and Development en octubre de 2002. El marco se lanzó por primera vez bajo la licencia Apache 2.0 en junio de 2003. La primera producción La versión 1.0 se lanzó en marzo de 2004. [6] El marco Spring 1.2.6 ganó un premio de productividad Jolt y un premio JAX a la innovación en 2006. [7] [8] Spring 2.0 se lanzó en octubre de 2006, Spring 2.5 en noviembre 2007, Spring 3.0 en diciembre de 2009, Spring 3.1 en diciembre de 2011 y Spring 3.2.5 en noviembre de 2013. [9] Spring Framework 4.0 se lanzó en diciembre de 2013. [10] Las mejoras notables en Spring 4.0 incluyeron soporte para Java SE (Estándar Edition) 8, Groovy 2, [11] [12] algunos aspectos de Java EE 7 y WebSocket . [13]

Spring Framework 4.2.0 se lanzó el 31 de julio de 2015 y se actualizó inmediatamente a la versión 4.2.1, que se lanzó el 1 de septiembre de 2015. [14] Es "compatible con Java 6, 7 y 8, con un enfoque en mejoras principales y capacidades web modernas" . [15]

Spring Framework 4.3 se lanzó el 10 de junio de 2016 y fue compatible hasta 2020. [16] Se anunció que "sería la generación final dentro de los requisitos generales del sistema Spring 4 (Java 6+, Servlet 2.5+), [...] " . [15]

Se anuncia que Spring 5 se basará en Reactor Core compatible con Reactive Streams . [17] [ fuente obsoleta ]

Spring Framework 6.0 se lanzó el 16 de noviembre de 2022 y vino con una línea base Java 17+ y un cambio a Jakarta EE 9+ (en el jakartaespacio de nombres), con un enfoque en las API Jakarta EE 10 lanzadas recientemente , como Servlet 6.0 y JPA 3.1. . [18]

Módulos

Spring Framework incluye varios módulos que brindan una variedad de servicios:

Los módulos Spring están empaquetados como archivos JAR. [46] Se puede acceder a estos artefactos a través del Repositorio Central de Maven usando Maven [47] o Gradle . [48]

Inversión del contenedor de control.

El contenedor de inversión de control (IoC) es el contenedor principal de Spring Framework. [2] Proporciona un medio consistente para configurar y administrar objetos Java [2] [4] : ​​127–131  usando la reflexión . [49] El contenedor es responsable de gestionar los ciclos de vida de objetos específicos: [4] : ​​128  creando estos objetos, [50] llamando a sus métodos de inicialización , [49] y configurando estos objetos conectándolos entre sí. [51]

En muchos casos, no es necesario utilizar el contenedor cuando se utilizan otras partes de Spring Framework, aunque su uso probablemente hará que la aplicación sea más fácil de configurar y personalizar. El contenedor Spring proporciona un mecanismo consistente para configurar aplicaciones [4] : ​​122  y se integra con casi todos los entornos Java, desde aplicaciones de pequeña escala hasta aplicaciones empresariales de gran tamaño.

El programador no crea directamente un objeto, sino que describe cómo debe crearse definiéndolo en el archivo de configuración de Spring. De manera similar, los servicios y componentes no se llaman directamente; en cambio, un archivo de configuración de Spring define qué servicios y componentes deben llamarse. Este IoC tiene como objetivo aumentar la facilidad de mantenimiento y pruebas.

Crear y gestionar beans

Los objetos creados por el contenedor se denominan objetos administrados o beans . [52] El contenedor se puede configurar cargando archivos XML (lenguaje de marcado extensible) [50] [4] : ​​151–152  o detectando anotaciones Java específicas en clases de configuración. Estas fuentes de datos contienen las definiciones de beans que proporcionan la información necesaria para crear los beans.

Es @Configurationuna anotación específica de Spring que marca una clase como clase de configuración. La clase de configuración proporciona los beans a Spring ApplicationContext. [53] Cada uno de los métodos en la clase de configuración Spring se configura con la @Beananotación. Luego, la ApplicationContextinterfaz devolverá los objetos configurados con la @Beananotación como beans. La ventaja de la configuración basada en Java sobre la configuración basada en XML es una mejor seguridad de tipos y refactorabilidad. [53]

Tipos de inversión de control

Existen varios tipos de Inversión de Control. La inyección de dependencia y la búsqueda de dependencia son ejemplos de inversión de control. [54] Los objetos se pueden obtener mediante búsqueda de dependencia o inyección de dependencia. [4] : 127  [55]

Inyección de dependencia

La inyección de dependencia es un patrón en el que el contenedor pasa objetos [4] : ​​128  por nombre a otros objetos, a través de constructores , [4] : ​​128  propiedades o métodos de fábrica . Hay varias formas de implementar la inyección de dependencia: inyección de dependencia basada en constructor, inyección de dependencia basada en setter e inyección de dependencia basada en campos. [56]

Búsqueda de dependencias

La búsqueda de dependencia es un patrón en el que una persona que llama solicita al objeto contenedor un objeto con un nombre específico o de un tipo específico.

cableado automático

El marco Spring tiene una característica conocida como cableado automático, que utiliza el contenedor Spring para satisfacer automáticamente las dependencias especificadas en las propiedades de JavaBean con objetos del tipo apropiado en la fábrica actual. [57] Esto solo puede ocurrir si solo hay un objeto con el tipo apropiado. [57]

Hay varias anotaciones que se pueden usar para POJO de cableado automático, incluida la anotación específica de Spring @Autowire(así como varias otras anotaciones específicas de Spring que ayudan a resolver la ambigüedad del cableado automático, como las anotaciones @Qualifiero @Primary), [58] [59] y el estándar Java anotaciones @Resourcey @Inject. [60]

La @Qualifieranotación se puede usar en una clase que define un bean para informar a Spring que dé prioridad a la creación del bean al conectarlo automáticamente por nombre. [59]

La @Primaryanotación se puede usar en una clase que define un bean para informar a Spring que dé prioridad a la creación del bean al cablearlo automáticamente por tipo. [59]

La @Resourceanotación es una anotación que se ajusta a JSR 250 , o Anotaciones comunes para la plataforma Java. La @Resourceanotación se utiliza para referencias de cableado automático a POJO por nombre. [60] La @Injectanotación es una anotación que se ajusta a JSR 300, o Anotaciones estándar para inyección. La @Injectanotación se utiliza para referencias de cableado automático a POJO por tipo. [60]

Marco de programación orientado a aspectos.

Spring Framework tiene su propio marco de programación orientada a aspectos (AOP) que modulariza las preocupaciones transversales en aspectos . [61] La motivación para crear un marco AOP separado es proporcionar características básicas de AOP sin demasiada complejidad en el diseño, implementación o configuración. El marco Spring AOP aprovecha al máximo el contenedor Spring.

El marco Spring AOP se basa en patrones proxy . [62] [24] Se configura en tiempo de ejecución . [ cita necesaria ] Esto elimina la necesidad de un paso de compilación o tejido en tiempo de carga. [ cita necesaria ] Por otro lado, la interceptación solo permite la ejecución de métodos públicos en objetos existentes en un punto de unión . [ cita necesaria ]

En comparación con el marco AspectJ , Spring AOP es menos poderoso, pero también menos complicado. [ cita necesaria ] Spring 1.2 incluye soporte para configurar aspectos de AspectJ en el contenedor. Spring 2.0 agregó más integración con AspectJ; por ejemplo, el lenguaje pointcut se reutiliza y se puede mezclar con aspectos basados ​​en Spring AOP. [ cita necesaria ] Además, Spring 2.0 agregó una biblioteca Spring Aspects que usa AspectJ para ofrecer características comunes de Spring, como la gestión de transacciones declarativas [62] y la inyección de dependencia a través del tiempo de compilación de AspectJ o el tejido en tiempo de carga. [63] SpringSource utiliza AspectJ AOP en otros proyectos de Spring como Spring Roo y Spring Insight, y Spring Security ofrece una biblioteca de aspectos basada en AspectJ. [ cita necesaria ]

Spring AOP ha sido diseñado para trabajar con preocupaciones transversales dentro de Spring Framework. [4] : 473  Cualquier objeto creado y configurado por el contenedor se puede enriquecer utilizando Spring AOP.

Spring Framework utiliza Spring AOP internamente para gestión de transacciones, seguridad, acceso remoto y JMX . [ cita necesaria ]

Desde la versión 2.0 del marco, Spring proporciona dos enfoques para la configuración de AOP:

<beans xmlns= "http://www.springframework.org/schema/beans" xmlns:mvc= "http://www.springframework.org/schema/mvc" xmlns:xsi= "http://www.w3 .org/2001/XMLSchema-instance" xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:context= "http://www.springframework.org/schema/context" xsi:schemaLocation = "http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context  http:/ /www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc.xsd  http: //www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop.xsd" >        

El equipo de Spring decidió no introducir nueva terminología relacionada con AOP. Por lo tanto, en la documentación de referencia y la API de Spring, términos como aspecto , punto de unión, consejo , corte de punto, introducción, objeto de destino (objeto recomendado), proxy AOP y tejido tienen los mismos significados [ cita requerida ] que en la mayoría de los demás AOP. marcos (particularmente AspectJ).

Marco de acceso a datos

El marco de acceso a datos de Spring aborda las dificultades comunes que enfrentan los desarrolladores cuando trabajan con bases de datos en aplicaciones. Se proporciona soporte para todos los marcos de acceso a datos populares en Java: JDBC, iBatis / MyBatis , [32] Hibernate , [32] Java Data Objects (JDO, descontinuado desde 5.x), [32] Jakarta Persistence API (JPA), [ 32] Oracle TopLink , Apache OJB y Apache Cayenne , entre otros.

Para todos estos marcos compatibles, Spring proporciona estas características

Todas estas características están disponibles cuando se utilizan clases de plantilla proporcionadas por Spring para cada marco compatible. [67] Los críticos han dicho que estas clases de plantilla son intrusivas y no ofrecen ninguna ventaja sobre el uso (por ejemplo) de la API de Hibernate directamente. [68] [ verificación fallida ] En respuesta, los desarrolladores de Spring han hecho posible utilizar las API de Hibernate y JPA directamente. Sin embargo, esto requiere una gestión de transacciones transparente, ya que el código de la aplicación ya no asume la responsabilidad de obtener y cerrar los recursos de la base de datos [69] y no admite la traducción de excepciones. [70]

Junto con la gestión de transacciones de Spring, su marco de acceso a datos ofrece una abstracción flexible para trabajar con marcos de acceso a datos. Spring Framework no ofrece una API de acceso a datos común; en cambio, toda la potencia de las API compatibles se mantiene intacta. [ cita necesaria ] Spring Framework es el único marco disponible en Java que ofrece entornos de acceso a datos administrados fuera de un servidor o contenedor de aplicaciones. [71] [ se necesita una mejor fuente ]

Al utilizar Spring para la gestión de transacciones con Hibernate, es posible que sea necesario configurar los siguientes beans:

Otros puntos de configuración incluyen:

Gestión de transacciones

El marco de gestión de transacciones de Spring aporta un mecanismo de abstracción a la plataforma Java. [73] Su abstracción es capaz de:

En comparación, Java Transaction API (JTA) solo admite transacciones anidadas y transacciones globales, y requiere un servidor de aplicaciones (y, en algunos casos, la implementación de aplicaciones en un servidor de aplicaciones).

Spring Framework incluye PlatformTransactionManager[75] para una serie de estrategias de gestión de transacciones:

Además de este mecanismo de abstracción, el marco proporciona dos formas de agregar gestión de transacciones a las aplicaciones:

Junto con el marco de acceso a datos de Spring, que integra el marco de gestión de transacciones, es posible configurar un sistema transaccional mediante configuración sin tener que depender de JTA o EJB . El marco transaccional también se integra con motores de mensajería [78] y almacenamiento en caché [79] .

Marco modelo-vista-controlador

Presentación Spring MVC/Web Reactive a cargo de Jürgen Höller

Spring Framework presenta su propio marco de aplicación web modelo-vista-controlador (MVC) , [35] que no estaba planeado originalmente. Los desarrolladores de Spring decidieron escribir su propio marco web como reacción a lo que percibieron como un diseño deficiente del (entonces) popular marco web Jakarta Struts , [80] [ verificación fallida ] , así como deficiencias en otros marcos disponibles. En particular, sintieron que había una separación insuficiente entre las capas de presentación y manejo de solicitudes, y entre la capa de manejo de solicitudes y el modelo. [81]

Al igual que Struts, Spring MVC es un marco basado en solicitudes. [4] : 375  El marco define interfaces de estrategia [4] : 144  para todas las responsabilidades que debe manejar un marco moderno basado en solicitudes. El objetivo de cada interfaz es ser simple y clara para que sea fácil para los usuarios de Spring MVC escribir sus propias implementaciones, si así lo desean. MVC allana el camino para un código frontal más limpio. Todas las interfaces están estrechamente acopladas a la API de Servlet . Algunos ven este estrecho acoplamiento con la API de Servlet como un fracaso por parte de los desarrolladores de Spring al ofrecer un alto nivel de abstracción para aplicaciones basadas en Web [ cita requerida ] . Sin embargo, este acoplamiento garantiza que las funciones de la API de Servlet permanezcan disponibles para los desarrolladores y, al mismo tiempo, ofrece un marco de alta abstracción para facilitar el trabajo con ella.

La DispatcherServletclase es el controlador frontal [82] del framework y es responsable de delegar el control a las distintas interfaces durante las fases de ejecución de una solicitud HTTP . [83]

Las interfaces más importantes definidas por Spring MVC y sus responsabilidades se enumeran a continuación: [84]

Cada interfaz de estrategia anterior tiene una responsabilidad importante en el marco general. Las abstracciones que ofrecen estas interfaces son poderosas, por lo que permiten un conjunto de variaciones en sus implementaciones. [4] : 144  Spring MVC incluye implementaciones de todas estas interfaces y ofrece un conjunto de funciones además de la API de Servlet. Sin embargo, los desarrolladores y proveedores son libres de escribir otras implementaciones. Spring MVC utiliza la interfaz Java java.util.Mapcomo una abstracción orientada a datos para donde Modelse espera que las claves sean Stringvalores. [ cita necesaria ]

La facilidad para probar las implementaciones de estas interfaces es una ventaja importante del alto nivel de abstracción que ofrece Spring MVC. [92] [4] : ​​324  DispatcherServlet está estrechamente acoplado a la inversión Spring del contenedor de control para configurar las capas web de las aplicaciones. Sin embargo, las aplicaciones web pueden usar otras partes de Spring Framework, incluido el contenedor, y optar por no usar Spring MVC.

Un flujo de trabajo de Spring MVC

Cuando un usuario hace clic en un enlace o envía un formulario en su navegador web, la solicitud va a Spring DispatcherServlet. DispatcherServletes un controlador frontal en Spring MVC. [83] [93] Es DispatcherServletaltamente personalizable y flexible. [93] Específicamente, es capaz de manejar más tipos de controladores que cualquier implementación org. springframework.web.servlet.mvc.Controllero org. springframework.stereotype.Controllerclase anotada. [93] Consulta una o más asignaciones de controladores. [83] DispatcherServlet elige un controlador apropiado y le envía la solicitud. Procesa Controllerla solicitud particular y genera un resultado. Es conocido como Model. Esta información debe formatearse en html o cualquier tecnología de interfaz de usuario como Jakarta Server Pages (también conocida como JSP) [83] [94] o Thymeleaf . [94] Esta es la versión Viewde una solicitud. [83] Toda la información está en el objeto ModelAnd View. Cuando el controlador no está acoplado a una vista particular, DispatcherServletencuentra la vista real View(como JSP) con la ayuda de ViewResolver. [83] [4] : ​​390–391 

Configuración de DispatcherServlet

A partir de la versión 3.0 de la especificación de servlet, existen algunas formas de configurar DispatcherServlet: [95]

<servlet> <nombre-servlet> MyServlet </nombre-servlet> <clase-servlet> org.springframework.web.servlet.DispatcherServlet </servlet-clase> </servlet>  <servlet-mapping> <servlet-name> MyServlet </servlet-name> <url-pattern> / <url-pattern> </servlet-mapping>  

Marco de acceso remoto

El marco de acceso remoto de Spring es una abstracción para trabajar con varias tecnologías basadas en RPC ( llamada a procedimiento remoto ) disponibles en la plataforma Java tanto para la conectividad del cliente como para la clasificación de objetos en los servidores. [96] La característica más importante que ofrece este marco es facilitar la configuración y el uso de estas tecnologías tanto como sea posible combinando inversión de control y AOP.

El marco proporciona recuperación de fallas (reconexión automática después de una falla de conexión) y algunas optimizaciones para el uso del lado del cliente de beans de sesión remotos sin estado EJB .

Spring brinda soporte para estos protocolos y productos listos para usar

Apache CXF proporciona integración con Spring Framework para la exportación de objetos estilo RPC en el lado del servidor. [99]

La configuración del cliente y del servidor para todos los protocolos y productos de estilo RPC admitidos por el marco de acceso remoto de Spring (excepto el soporte de Apache Axis) se configura en el contenedor Spring Core.

Existe una implementación alternativa de código abierto (Cluster4Spring) de un subsistema de comunicación remota incluido en Spring Framework que está destinado a admitir varios esquemas de comunicación remota (1-1, 1-muchos, descubrimiento de servicios dinámicos). [ cita necesaria ]

Desarrollo rápido de aplicaciones mediante convención sobre configuración

Bota de primavera

Spring Boot Extension es la solución de convención sobre configuración de Spring para crear aplicaciones independientes , de nivel de producción [100] basadas en Spring que puede "simplemente ejecutar". [101] Está preconfigurado con la "vista opinada" del equipo Spring [102] [103] de la mejor configuración y uso de la plataforma Spring y bibliotecas de terceros para que pueda comenzar con el mínimo esfuerzo. La mayoría de las aplicaciones Spring Boot necesitan muy poca configuración de Spring. [104]

Características clave:

primavera roo

Spring Roo es un proyecto comunitario que proporciona un enfoque alternativo basado en la generación de código para utilizar la convención sobre la configuración para crear rápidamente aplicaciones en Java . Actualmente es compatible con Spring Framework, Spring Security y Spring Web Flow . Roo se diferencia de otros marcos de desarrollo rápido de aplicaciones al centrarse en:

Marco por lotes

Spring Batch es un marco para el procesamiento por lotes que proporciona funciones reutilizables que son esenciales para procesar grandes volúmenes de registros, que incluyen:

Proporciona funciones y servicios técnicos más avanzados que permiten trabajos por lotes de volumen extremadamente alto [112] y alto rendimiento [111] a través de técnicas de optimización y partición [111] .

Spring Batch ejecuta una serie de trabajos; un trabajo consta de muchos pasos y cada paso consta de una tarea de "LECTURA-PROCESO-ESCRITURA" o una tarea de operación única (tasklet). Una tarea de operación "única" también se conoce como tasklet. [113] Significa realizar una sola tarea, como limpiar los recursos antes o después de que se inicie o complete un paso.

El proceso "LEER-PROCESAR-ESCRIBIR" consta de estos pasos: "leer" datos de un recurso ( valores separados por comas (CSV), XML o base de datos), "procesarlos" y luego "escribirlos" en otros recursos ( CSV, XML o base de datos). Por ejemplo, un paso puede leer datos de un archivo CSV, [113] procesarlos y escribirlos en la base de datos. Spring Batch proporciona muchas clases para leer/escribir CSV, XML y bases de datos. [114]

Los pasos se pueden encadenar para ejecutarlos como un trabajo. [113]

Marco de integración

Spring Integration es un marco para la integración de aplicaciones empresariales que proporciona funciones reutilizables esenciales para arquitecturas basadas en eventos o mensajería .

Spring Integration admite arquitecturas basadas en tuberías y filtros.

WebSocket de primavera

Una regla esencial para tratar con eficacia los flujos de datos es no bloquear nunca. [123] WebSocket es una solución viable a este problema. [123] El protocolo WebSocket es un protocolo de transporte de bajo nivel que permite canales de comunicación full-duplex a través de una conexión TCP . WebSocket actúa como una alternativa a HTTP para permitir la comunicación bidireccional entre el cliente y el servidor. WebSocket es especialmente útil para aplicaciones que requieren intercambios frecuentes y rápidos de pequeños fragmentos de datos, a alta velocidad y volumen. [123]

Spring admite el protocolo WebSocket al proporcionar la API WebSocket para la aplicación reactiva. La @EnableWebSocketanotación proporciona la funcionalidad de procesamiento de solicitudes de Websocket cuando se coloca en una clase de configuración de Spring. Una interfaz obligatoria es la WebSocketConfigurerque otorga acceso al archivo WebSocketConfigurer. Luego, la URL de Websocket se asigna a los controladores relevantes implementando el método RegisterWebSocketHandlers(WebSocketHandlerRegistry). [124]

Flujo web de primavera

Spring WebFlux es un marco que sigue el paradigma de programación funcional, diseñado para crear aplicaciones Spring reactivas. Este marco utiliza ampliamente programación funcional y Reactive Streams. Un buen caso de uso para Spring WebFlux es para aplicaciones que requieren enviar y recibir información instantánea, como una aplicación web con capacidades de chat. [125]

Aunque las aplicaciones que utilizan la tecnología Spring WebFlux suelen ser menos legibles que sus homólogas MVC, son más resistentes y más sencillas de ampliar. [126] Spring WebFlux reduce la necesidad de lidiar con las complicaciones asociadas con la sincronización del acceso a subprocesos. [126]

Spring WebFlux admite eventos enviados por el servidor (SSE), que es una tecnología de inserción de servidor que permite al cliente obtener actualizaciones automáticas de un servidor a través de una conexión HTTP. Esta comunicación es unidireccional y comparte muchas similitudes con el modelo de publicación/suscripción que se encuentra en JMS. [123]

Relación con Jakarta Enterprise Beans (EJB)

El contenedor se puede convertir en un contenedor EJB (Enterprise JavaBeans) 3.0 parcialmente compatible mediante el proyecto Pitchfork. [ cita necesaria ] Algunos [ ¿quién? ] critican el Spring Framework por no cumplir con los estándares. [127] [ verificación fallida ] Sin embargo, SpringSource no considera el cumplimiento de EJB 3 como un objetivo principal y afirma que Spring Framework y el contenedor permiten modelos de programación más potentes. [128] [ verificación fallida ]

Vulnerabilidad Spring4Shell

En abril de 2022 se publicó una vulnerabilidad de ejecución remota de código que afecta a determinadas versiones de Spring Framework bajo CVE - 2022-22965. Se le dio el nombre Spring4Shell en referencia a la reciente vulnerabilidad Log4Shell , ambas con pruebas de concepto similares en las que los atacantes podían, en máquinas vulnerables, obtener acceso al shell [129] o incluso control total. [130]

Ver también

Citas

  1. ^ "Versión v6.1.4".
  2. ^ a b C Deinum et al. 2014, pág. 47, §2 Tareas principales de primavera.
  3. ^ Deinum y otros. 2014, págs. 694–698, §16-2 Integración de dos sistemas utilizando JMS.
  4. ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae Johnson & Hoeller 2004.
  5. ^ Deinum y Cosmina 2021, pag. 1, §1 Creación de un entorno de desarrollo local.
  6. ^ "Lanzamiento final de Spring Framework 1.0". Blog oficial de Spring Framework . 24 de marzo de 2014 . Consultado el 1 de marzo de 2021 .
  7. ^ Ganadores de Jolt 2006
  8. ^ "Ganador del premio JAX a la innovación 2006". Archivado desde el original el 17 de agosto de 2009 . Consultado el 12 de agosto de 2009 .
  9. ^ "Lanzamiento de Spring Framework 3.2.5". Sitio web oficial de primavera . 7 de noviembre de 2013 . Consultado el 16 de octubre de 2016 .
  10. ^ "Anuncio del lanzamiento de Spring Framework 4.0 GA". Blog de primavera. 12 de diciembre de 2013.
  11. ^ Muros 2016, págs. 92-106, §5.
  12. ^ Cosmina y col. 2017, págs. 125–126, §4 Configuración de Spring en detalle y Spring Boot.
  13. ^ Cosmina y col. 2017, págs. 1–18, §1 Presentación de la primavera.
  14. ^ "Spring Framework 4.2 se convierte en GA". Blog de primavera. 31 de julio de 2015.
  15. ^ ab "Spring Framework 4.2 se convierte en GA". Blog de primavera.
  16. ^ "Versiones de Spring Framework: versiones compatibles". github.com .
  17. ^ "Resorte reactivo". Blog de primavera. 9 de febrero de 2016.
  18. ^ "Spring Framework 6.0 se convierte en GA". Blog de primavera. 16 de noviembre de 2022.
  19. ^ Muros 2019, pag. 48.
  20. ^ Documentación de Spring Framework para Core Container
  21. ^ ab Johnson y col. 2005, Capítulo §2 - Bean Factory y ApplicationContext.
  22. ^ Deinum y otros. 2014, pág. 137, §3-1 Uso de Java Config para configurar POJO.
  23. ^ ab Johnson y Hoeller 2004, pág. 150, Presentación de Spring Framework: The Core Bean Factory.
  24. ^ abcdefg Deinum & Cosmina 2021, págs. 22-25, §2 Fundamentos de Spring Framework: The Spring Framework.
  25. ^ Muros 2016, pag. 240, §Apéndice D Dependencias de Spring Boot.
  26. ^ Johnson y col. 2005, Capítulo §1 Presentación de Spring Framework - Resumen del módulo.
  27. ^ Johnson y col. 2005, Capítulo §4 - Primavera y AOP.
  28. ^ Deinum y otros. 2014, págs. 196–198, §3-17 Introducciones de AOP para POJO.
  29. ^ Johnson y col. 2005, Sistema de Seguridad Acegi para Primavera.
  30. ^ Deinum y otros. 2014, pág. 331, §7 Seguridad de primavera.
  31. ^ Muros 2019, págs. 56–59.
  32. ^ abcdef Deinum et al. 2014, págs. 419–426, §10 Acceso a datos.
  33. ^ Deinum y otros. 2014, págs. 677–681, §15-4 Cree POJO basados ​​en mensajes en primavera.
  34. ^ Johnson y col. 2005, Capítulo §12 - Marco Web MVC.
  35. ^ a b C Deinum et al. 2014, pág. 217, §4 Primavera @MVC.
  36. ^ Deinum y otros. 2014, págs. 525–534, §12-3 Escritura de un ItemWriter y un ItemReader personalizados.
  37. ^ Deinum y otros. 2014, págs. 627–632, §14-7 Exponer e invocar servicios a través de RMI; §14-8 Exponer e invocar servicios a través de HTTP.
  38. ^ Deinum y otros. 2014, págs. 641–658, §14-10 Introducción al contrato de primeros servicios web SOAP, §14-11 Exponer e invocar servicios web SOAP con Spring-WS, §14-12 Desarrollar servicios web SOAP con Spring-WS y XML Marshalling .
  39. ^ Johnson y col. 2005, Capítulo §8 - Telecomunicación ligera.
  40. ^ ab Johnson y col. 2005, Capítulo §9 - Servicios de apoyo.
  41. ^ Deinum y otros. 2014, pág. 475, §11 Gestión de transacciones de primavera.
  42. ^ Deinum y otros. 2014, pág. 591, §14 Servicios empresariales y tecnologías remotas de Spring Java.
  43. ^ Deinum y otros. 2014, págs. 737–739, §17-3 Unidad de prueba de controladores Spring MVC.
  44. ^ Deinum y otros. 2014, págs. 739–743, §17-4 Gestión de contextos de aplicaciones en pruebas de integración.
  45. ^ Música 2022, pag. 358, §8.3 Presentación de Spring WebFlux.
  46. ^ Cosmina y col. 2017, pág. 21-23.
  47. ^ Cosmina y col. 2017, págs. 24–25, §2 Acceso a módulos Spring mediante Maven.
  48. ^ Cosmina y col. 2017, pág. 26, §2 Acceso a módulos Spring usando Gradle.
  49. ^ ab Deinum et al. 2014, págs. 53–62, §2-2 Cree POJO invocando un constructor.
  50. ^ ab Deinum et al. 2014, págs. 48–52, §2-1 Administrar y configurar POJO con Spring IoC Container.
  51. ^ Deinum y otros. 2014, págs. 59–67, §2-3 Utilice referencias de POJO, cableado automático e importaciones para interactuar con otros POJO.
  52. ^ Deinum y otros. 2014, págs. 112–116, §2-16 Utilice editores de propiedades en primavera.
  53. ^ ab Walls 2019, págs. 4–6, §1.1 Primeros pasos con Spring: ¿Qué es Spring?
  54. ^ Cosmina y col. 2017, pág. 37, §3 Presentación de IoC y DI en primavera.
  55. ^ ¿ Cuál es la diferencia entre búsqueda de dependencia e inyección de dependencia? Foro de primavera. Foro.springsource.org (28 de octubre de 2009). Recuperado el 24 de noviembre de 2013.
  56. ^ Deinum & Cosmina 2021, págs. 26–32, §2 Fundamentos de Spring Framework: inyección de dependencia.
  57. ^ ab Johnson & Hoeller 2004, págs. 135-137, §6 Contenedores livianos e inversión de control - Contenedores COI.
  58. ^ Deinum y otros. 2014, págs. 145–151, §3-3 Utilice referencias de POJO y cableado automático para interactuar con otros POJO.
  59. ^ abc Cosmina et al. 2017, págs. 112–120, §3 Presentación de IoC y DI en primavera: cableado automático de sus beans.
  60. ^ a b C Deinum et al. 2014, págs. 151–154, §3-4 POJO de cableado automático con las anotaciones @Resource y @Inject.
  61. ^ Deinum y otros. 2014, págs. 99–104, §2-12 Programación orientada a aspectos.
  62. ^ a b C Deinum et al. 2014, págs. 492–494, §11-6 Gestión de transacciones de forma declarativa con la anotación @Transactional.
  63. ^ Deinum y otros. 2014, págs. 509–510, §11-11 Gestión de transacciones con tejido en tiempo de carga.
  64. ^ Configuración XML de Spring AOP
  65. ^ Configuración de anotaciones de AspectJ
  66. ^ Deinum y otros. 2014, págs. 441–446, §10-5 Manejo de excepciones en el marco Spring JDBC.
  67. ^ Deinum y otros. 2014, págs. 426–441, 463–465.
  68. ^ Hibernar VS primavera
  69. ^ Deinum y otros. 2014, págs. 463–466, §10-8 Objetos persistentes con plantillas ORM de Spring.
  70. ^ Deinum y otros. 2014, págs. 446–462, §10-6 Problemas con el uso directo de marcos ORM.
  71. ^ "Spring Data JPA para la abstracción de consultas". 6 de febrero de 2018 . Consultado el 6 de febrero de 2018 .
  72. ^ ab Deinum et al. 2014, págs. 456–460, §10-7 Configuración de fábricas de recursos ORM en primavera.
  73. ^ abcd Deinum et al. 2014, págs. 464–468, §11-2 Elección de una implementación de Transaction Manager.
  74. ^ ab Deinum et al. 2014, págs. 494–499, §11-7 Establecimiento del atributo de transacción de propagación.
  75. ^ Deinum y otros. 2014, págs. 482–484, §11-2 Elección de una implementación de Transaction Manager.
  76. ^ Deinum y otros. 2014, págs. 484–486, §11-3 Gestión de transacciones mediante programación con la API de Transaction Manager.
  77. ^ Deinum y otros. 2014, págs. 486–489, §11-4 Gestión de transacciones mediante programación con una plantilla de transacciones.
  78. ^ Deinum y otros. 2014, págs. 677–685, §15-4 Cree POJO basados ​​en mensajes en primavera.
  79. ^ Deinum y otros. 2014, págs. 685–686, §15-5 Conexiones JMS de grupo y caché.
  80. ^ Introducción al marco de primavera
  81. ^ Johnson, experto en diseño y desarrollo J2EE uno a uno, cap. 12. et al.
  82. ^ Patrones de arquitectura de aplicaciones empresariales: controlador frontal
  83. ^ abcdefg Deinum et al. 2014, págs. 217–232, §4-1 Desarrollo de una aplicación web sencilla con Spring MVC.
  84. ^ Deinum & Cosmina 2021, págs. 82–83, §4 Arquitectura Spring MVC: resumen del procesamiento de solicitudes.
  85. ^ Deinum y otros. 2014, págs. 217–219, §4-1 Desarrollo de una aplicación web sencilla con Spring MVC.
  86. ^ Muros 2019, págs. 18-19.
  87. ^ ab Deinum et al. 2014, págs. 236–239, §4-3 Solicitudes de interceptación con interceptores manejadores.
  88. ^ Deinum y otros. 2014, págs. 239–240, §4-4 Resolución de configuraciones regionales del usuario.
  89. ^ Deinum & Cosmina 2021, págs. 75–76, §4 Arquitectura Spring MVC: preparar una solicitud.
  90. ^ ab Deinum et al. 2014, págs. 243–247, §4-6 Resolución de vistas por nombres.
  91. ^ Deinum y Cosmina 2021, pag. 81, §4 Arquitectura Spring MVC: renderizar una vista.
  92. ^ Deinum y otros. 2014, pág. 723, §17 Pruebas de primavera.
  93. ^ abc Deinum & Cosmina 2021, págs. 73–74, §4 Arquitectura Spring MVC: flujo de trabajo de procesamiento de solicitudes de DispatcherServlet.
  94. ^ ab Paredes 2019, pag. 35.
  95. ^ abcdef Deinum & Cosmina 2021, págs. 84–90, §4 Arquitectura Spring MVC: arranque de DispatcherServlet.
  96. ^ a b C Deinum et al. 2014, págs. 627–632, §14-7 Exponer e invocar servicios a través de RMI.
  97. ^ ab Deinum et al. 2014, págs. 632–635, §14-8 Exponer e invocar servicios a través de HTTP.
  98. ^ Deinum y otros. 2014, págs. 692–694, §16-1 Integración de un sistema con otro utilizando EAI.
  99. ^ ab Deinum et al. 2014, págs. 635–641, §14-9 Exponer e invocar servicios web SOAP con JAX-WS.
  100. ^ ab Paredes 2016, pag. vii, §prólogo.
  101. ^ "Bota de primavera". primavera.io.
  102. ^ Muros 2016, pag. 48, §2.4.
  103. ^ Deinum & Cosmina 2021, págs. 21-22, §2 Fundamentos de Spring Framework.
  104. ^ Muros 2016, págs. 37–48, §2.3.
  105. ^ ab Paredes 2016, pag. 7, §1.1.3.
  106. ^ ab Paredes 2016, pag. x, §Prefacio.
  107. ^ Walls 2016, págs. 4-5, §1.1.2.
  108. ^ ab Walls 2016, págs. 124-139, §7.
  109. ^ Muros 2016, págs. 49–69, §3.1-§3.2.3.
  110. ^ "Acerca de Spring Boot" . Consultado el 18 de marzo de 2020 .
  111. ^ a b C Deinum et al. 2014, págs. 536–541, §12-7 Ejecución del paso de control.
  112. ^ Deinum y otros. 2014, págs. 714–717, §16-9 Organización de eventos mediante Spring Batch.
  113. ^ a b C Deinum et al. 2014, págs. 518–524, §12-2 Lectura y escritura.
  114. ^ Deinum y otros. 2014, págs. 511–512, §12 Lote de primavera.
  115. ^ Deinum y otros. 2014, págs. 713–714, §16-8 Enrutamiento condicional con enrutadores.
  116. ^ Deinum y otros. 2014, págs. 704–707, §16-5 Transformar un mensaje de un tipo a otro.
  117. ^ Deinum y otros. 2014, págs. 686–690, §15-6 Enviar y recibir mensajes AMQP con Spring.
  118. ^ Deinum y otros. 2014, págs. 613–620, §14-4 Envíe un correo electrónico con el soporte por correo electrónico de Spring.
  119. ^ Deinum y otros. 2014, pág. 406, §9-2 Uso de Spring en sus servlets y filtros.
  120. ^ Deinum y otros. 2014, págs. 695–698, §16-2 Integración de dos sistemas utilizando JMS.
  121. ^ Deinum y otros. 2014, págs. 717–722, §16-10 Uso de puertas de enlace.
  122. ^ ab Deinum et al. 2014, págs. 710–713, §16-7 Control de integración de bifurcación: divisores y agregadores.
  123. ^ abcd Deinum & Cosmina 2021, págs. 422–425, §11 El protocolo WebSocket.
  124. ^ Deinum & Cosmina 2021, págs. 425–432, §11 El protocolo WebSocket.
  125. ^ Deinum y Cosmina 2021, pag. 369, §10 Creación de aplicaciones reactivas con Spring WebFlux.
  126. ^ ab Deinum y Cosmina 2021, pag. 421, §11 Protección de aplicaciones Spring WebFlux.
  127. ^ Primavera VS EJB3
  128. ^ "Preguntas frecuentes sobre Pitchfork" . Consultado el 6 de junio de 2006 .
  129. ^ "Spring4Shell: vulnerabilidad crítica en Spring - blog oficial de Kaspersky".
  130. ^ Chirgwin, Richard (4 de abril de 2022). "VMware surgido por la vulnerabilidad Spring4shell". itnews.com.au. Archivado desde el original el 13 de febrero de 2024 . Consultado el 13 de febrero de 2024 .

Referencias

enlaces externos