El viernes 10 de Junio, Spring Framework anunció la version 4.3.0.RELEASE. Algunas de las mejoras o nuevas características en esta versión son las siguientes:

  • Previo a esta versión, soliamos usar en nuestros tests la clase SpringJUnit4ClassRunner. El cual para ser sinceros resulta un poco difícil de recordar. Es por esta razón que se creó la clase SpringRunner.

    @RunWith(SpringRunner.class)
    public class FooTests { ... }
  • Si estamos usando Java 8, ahora podemos declarar default methods como beans.

    public interface ReservationService {
    
      @Bean
      default ReservationService reservationService() { ... }
    
    }
  • No más @Autowired!!! De ahora en adelante spring permite la inyección de dependencias a través de constructor automáticamente. En el caso que una dependencia sea opcional podemos envolverla usando la clase ObjectProvider. Está característica también es soportada en clases anotadas con @Configuration.

    @Configuration
    public class FooBarConfiguration {
    
      private Foo foo;
    
      private Bar bar;
    
      public FooBarConfiguration(Foo foo, ObjectProvider<Bar> bar) {
        this.foo = foo;
        this.bar = bar.getIfAvailable();
      }
    
    }
  • Nuevas anotaciones, como por ejemplo, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping y @PatchMapping las cuales son composiciones de la ya conocida @RequestMapping.

    @RestController
    public class FooRestController {
    
      //@RequestMapping(method = RequestMethod.GET)
      @GetMapping
      public List<Foo> list() { ... }
    
    }
  • Inyección de beans basados en Collection.

    @Bean
    public List<ProviderCustomizer> providerCustomizers() { ... }
    
    @Service
    public class FooCustomizer {
    
      public FooCustomizer(List<ProviderCustomizer> customizers) { ... }
    
    }
  • Beans del mismo tipo pueden ser inyectados a través de un Collection.

    @Bean
    public ProviderCustomizer customizerA() { ... }
    
    @Bean
    public ProviderCustomizer customizerB() { ... }
    
    public class ProviderService {
    
      public ProviderService(List<ProviderCustomizer> customizers) {
        // customizers contiene los beans 'customizerA' y 'customizerB'
      }
    
    }
  • En esta versión se ha agregado el soporte del proveedor de cache Caffeine el cual entra en reemplazo de Guava. Puedes leer más en la sección New Features and Enhancements in Spring Framework 4.3 de la documentación oficial.


Eddú Meléndez

Java Software Engineer, Open Source Contributor