¿Cuáles son las nuevas características de Spring MVC 4.3.4?
Los contenedores principales también proporcionan metadatos más completos para mejorar la programación.
Los métodos predeterminados de Java 8 se detectan como métodos getter/setter de propiedades de bean.
Si el bean de destino solo define un constructor, entonces no necesita especificar la anotación @Autowired.
La clase @Configuration admite la inyección de constructor.
Cualquier expresión SpEL utilizada para especificar el bean de referencia condicional de @EventListener (por ejemplo, @beanName.method()).
Las anotaciones de componentes ahora pueden ser anuladas por elementos del tipo de componente de matriz que contienen propiedades de matriz en metaanotaciones. Por ejemplo, la ruta String[] de @RequestMapping puede superponerse con la ruta String en la anotación combinada.
@Scheduled y @Schedules ahora se utilizan como metaanotaciones para crear anotaciones sintéticas personalizadas mediante anulaciones de atributos.
@Scheduled admite adecuadamente beans de cualquier alcance.
Mejoras en el acceso a datos
Jdbc:initialize-database y jdbc:embedded-database admiten delimitadores configurables aplicados a cada script.
Mejoras en la caché
Spring 4.3 permite la sincronización cuando una clave determinada se llama simultáneamente, por lo que el valor correspondiente solo se calcula una vez. Esta es una característica opcional, habilitada al configurar el nuevo atributo de sincronización de @Cacheable. Esta función introduce un cambio importante en la interfaz de caché, a saber, get(Object key, Callablelt
Spring 4.3 también mejora la abstracción de caché de la siguiente manera:
Las expresiones SpEL ahora pueden hacer referencia a bean (es decir, @beanName.method()) para obtener anotaciones relacionadas con el caché.
ConcurrentMapCacheManager y ConcurrentMapCache ahora admiten la serialización de entidades almacenadas en caché a través del nuevo atributo storeByValue, ahora se utilizan @Cacheable, @CacheEvict, @CachePut y @Caching. como metaanotación para crear anotaciones de composición personalizadas mediante anulaciones de propiedades
@SendTo ahora puede especificar * * * objetivos de respuesta a nivel de clase
mejoras de JMS
<. p> p>@JmsListener y @jmslistener ahora se utilizan como metaanotaciones para crear anotaciones combinadas personalizadas mediante la anulación de atributos
Mejoras en la página web
Soporte integrado para HTTP encabezados y compatibilidad con opciones HTTP.
@RequestMapping utiliza nuevas combinaciones de anotaciones @getmapping, @postmapping, @deletmapping y @PatchMapping.
Ver variantes de combinación de @RequestMapping. >Nuevas anotaciones @RequestScope, @SessionScope y @ApplicationScope para combinaciones de alcance web
Alcance de solicitud, alcance de sesión y alcance de aplicación
Nuevas anotaciones @RestControllerAdvice es una combinación semántica de @ControllerAdvice y. @ResponseBody
@ResponseStatus ahora es compatible a nivel de clase y se hereda por todos los métodos
La nueva anotación @SessionAttribute se utiliza para acceder a las propiedades de la sesión (ver ejemplos).
La nueva anotación @RequestAttribute se utiliza para acceder a los atributos de la solicitud (ver ejemplo).
@ModelAttribute permite evitar el enlace de datos pasando vinculante=false (ver Referencia).
Los errores y los lanzamientos personalizados se unificarán en el controlador de excepciones MVC para su procesamiento.
Las codificaciones de conversión de mensajes HTTP son consistentes, incluido el UTF-8 predeterminado para contenido de texto de varias partes.
El procesamiento de recursos estáticos utiliza el ContentNegotiationManager configurado para el cálculo del tipo de medio.
RestTemplate y AsyncRestTemplate admiten codificación estricta de variables URI a través de DefaultUriTemplateHandler.
AsyncRestTemplate admite la interceptación de solicitudes.
Mejoras en la mensajería de WebSocket
@SendTo y @SendToUser ahora se pueden especificar como * * * destinos compartidos a nivel de clase.
Mejoras en las pruebas
Para admitir el marco Spring TestContext, ahora se requiere JUnit 4.12 o superior.
El nuevo SpringRunner está asociado con SpringJUnit4ClassRunner.
Las anotaciones relacionadas con las pruebas ahora se pueden declarar en las interfaces. Por ejemplo, utilice interfaces de prueba en interfaces basadas en Java 8.
La @ContextConfiguration declarada vacía ahora se ignorará por completo si se detecta un archivo XML predeterminado, un script Groovy o un tipo @Configuration.
Los métodos de prueba @Transactional ya no necesitan ser públicos (por ejemplo, en TestNG y JUnit 5).
@BeforeTransaction y @AfterTransaction ya no necesitan ser públicos y se declaran en los métodos predeterminados de las interfaces basadas en Java 8.
El caché de ApplicationContext en el marco Spring TestContext ahora está limitado por 32, que es el tamaño máximo predeterminado y la política de desalojo utilizada menos recientemente. El tamaño máximo se puede establecer configurando una propiedad del sistema JVM llamada Spring. test.context.cache.maxsize o configuración de Spring.
La API ContextCustomizer se utiliza para personalizar el contexto de la aplicación de prueba después de que la definición del bean se carga en el contexto y antes de que se actualice el contexto. Terceros de todo el mundo pueden registrar herramientas personalizadas sin implementar un ContextLoader personalizado.
@Sql y @SqlGroup ahora se utilizan como metaanotaciones anulando propiedades para crear anotaciones combinadas personalizadas.
ReflectionTestUtils ahora puede desbloquear servidores proxy automáticamente al configurar u obtener campos.
Las pruebas Spring MVC del lado del servidor admiten encabezados de respuesta con múltiples valores.
La prueba Spring MVC del lado del servidor analiza el contenido de la solicitud de los datos del formulario y completa los parámetros de la solicitud.
Las pruebas Spring MVC del lado del servidor admiten afirmaciones de estilo simulado para llamar a métodos de controlador.
El soporte de pruebas REST del lado del cliente le permite especificar cuántas solicitudes esperadas hay y si el orden esperado de las declaraciones debe ignorarse (consulte 15.6.3, "Pruebas REST del lado del cliente").
Las pruebas REST del lado del cliente respaldan las expectativas para solicitar datos del formulario principal.
Soporta nuevas bibliotecas de clases y servidores
Hibernate ORM 5.2 (también se admiten 4.2/4.3 y 5.0/5.1, no se recomienda 3.6).
Jackson 2.8 (Spring 4.3, hasta Jackson 2.6)
OkHttp 3.x (OkHttp 2.x todavía se admite en paralelo)
Netty 4.1
Reflujo 1.4
Tomcat 8.5.2 y 9.0 M6