⭐ New Features
@ExceptionHandler
should be able to return ResponseEntity [SPR-8839] #13481- Reference Documentation, Chapter 15 - WebMVC, minor issues [SPR-8391] #13038
- Allow convenient addition of custom Converter types against ConfigurableEnvironment / ConfigurablePropertyResolver [SPR-8389] #13036
- Support "contextInitializerClasses" init-param for FrameworkServlet [SPR-8366] #13013
- Support introspection of nested classes with ClassMetadata [SPR-8358] #13005
- Introduce AbstractEnvironment#customizePropertySources [SPR-8354] #13001
- Consolidate support for HandlerInterceptor and MappedInterceptor types in AbstractHandlerMapping [SPR-8352] #12999
- When using Java-based configuration, nested ViewResolvers in ContentNegotiatingViewResolver may require bean initialization [SPR-8350] #12997
- Introduce ResourcePropertySource [SPR-8328] #12977
- Documentation for
@BeanAge
[SPR-8327] #12976 - Add Environment.getProperty(String name, Class targetType, T defaultValue); [SPR-8322] #12971
- Add option to register configuration classes via Class<?> in AnnotationConfigWebApplicationContext [SPR-8320] #12968
- Provide
@Configuration
support for enabling load-time weaving (@EnableLoadTimeWeaving
) [SPR-8317] #12965 - Provide
@Configuration
support for PropertySource registration (@PropertySource
) [SPR-8314] #12962 - Provide
@Configuration
support for annotation-based transaction management [SPR-8313] #12961 - Provide
@Configuration
support for async method execution [SPR-8311] #12959 - Allow recursive use of
@ComponentScan
[SPR-8307] #12956 - ConversionServiceFactory.addDefaultConverters() should add symetric converters [SPR-8306] #12955
- Provide
@Configuration
support for configuring Spring@MVC
[SPR-8310] #12953 - cache mutable operations should not return values [SPR-8298] #12946
- Extension for CastorMarshaller - additional unmarshaller properties [SPR-8296] #12944
- Extension for CastorMarshaller - additional marshaller properties [SPR-8295] #12943
- Provide
@Configuration
support for scheduled tasks [SPR-8262] #12910 - Introduce
@Role
annotation [SPR-8260] #12908 - Allow ref= as well as for mvc:interceptor/ [SPR-8252] #12900
- Provide HandlerMethod-based implementations of HandlerMapping, HandlerAdapter, and HandlerExceptionResolver [SPR-8214] #12864
- Relax requirement for transaction manager name/reference in EnableTransactionManagement [SPR-8207] #12857
- Scheduled tasks should allow a reference to a Trigger bean in XSD [SPR-8205] #12855
- Introduce a reserved default profile name [SPR-8203] #12852
- Automatically detect and register nested
@Configuration
classes [SPR-8186] #12837 - Allow child ApplicationContext to inherit parent Environment [SPR-8185] #12836
- Support automatic detection of close methods [SPR-8114] #12768
- MapPropertySource constructor should have public visibility [SPR-8107] #12761
- Support Hibernate 3.6.x [SPR-8100] #12755
- Support injection against setter methods with non-void return types [SPR-8079] #12734
- Introduce HibernateExceptionTranslator [SPR-8076] #12731
- BindException method signatures still use raw types [SPR-8062] #12717
- Allow other delimiters in profile XML attribute [SPR-8033] #12688
- Cache support - extend key features [SPR-8007] #12662
- Support Quartz 1.8.x or better [SPR-7987] #12642
- Process
@ImportResource
with current ResourceLoader [SPR-7973] #12628 - Cache KeyGenerator.extract() should allow to use the bean identity [SPR-7971] #12626
- TestContext framework should support declarative configuration of bean definition profiles [SPR-7960] #12615
- SessionFactoryUtils.convertHibernateAccessException() improperly swallows underlying HibernateException [SPR-7933] #12588
- Allow target access in Cache Key SpEL [SPR-7832] #12488
- Add support for package binding in the JibxMashaller [SPR-7805] #12461
- JibxMarshaller supports method returns true for classes not in the configured binding [SPR-7804] #12460
- Make it easier to customize or extend the HandlerAdapter for annotated methods [SPR-7792] #12448
- Support configuring Servlet container in Spring using Servlet 3.0 programmatic config [SPR-7672] #12328
- ExceptinHandler method behaves differently than request handler [SPR-7637] #12293
- Construct org.springframework.core.convert.TypeDescriptor programatically for collections [SPR-7597] #12253
- GeneratedKeyHolder.getKey returns NULL with postgres [SPR-7564] #12221
- Automatically expose
@PathVariables
in the Model [SPR-7543] #12200 - Support lazy initialization for jee:jndi-lookup [SPR-7477] #12135
- CastorMarshaller should have suppressXMLDeclaration [SPR-7442] #12100
- JSON (jackson)
@RequestBody
marshalling throws awkward exception [SPR-7439] #12097 - HandlerInterceptor improvement - insufficient context (no handler method) information [SPR-7408] #12066
- TypeDescriptor.forElementType() does not work for TypeDescriptor obtained via TypeDescriptor.valueOf() [SPR-7390] #12048
- JDBC data source initializer should be able to execute PL/SQL with embedded statements [SPR-7364] #12022
- Add equivalent of JAX-RS
@Consumes
to Spring MVC [SPR-7354] #12013 - Add equivalent of JAX-RS
@Produces
to Spring MVC [SPR-7353] #12012 @RequestHeader
negation expressions (e.g. !Accept=text/plain) are not applied [SPR-7346] #12005- TestContext should generate cache keys based on all metadata that uniquely identify ApplicationContext configuration [SPR-7326] #11984
- Extend JdbcTemplate to allow larger batch updates [SPR-7290] #11949
- Per-Controller MessageConverter [SPR-7213] #11872
- Better exception when annotated calling controller methods [SPR-7202] #11861
- Allow mvc:interceptor to have a ref to a bean [SPR-6996] #11661
- MediaType Quality not being factored into mvc Content Negotiation [SPR-6952] #11617
- Support for single value responses using ContentNegotiatingViewResolver [SPR-6932] #11597
- Support JSR 303 for REST [SPR-6928] #11593
- Deprecate SimpleJdbcTemplate in favor of JdbcTemplate [SPR-6922] #11587
- Add support for data binding from URI template variables to JavaBeans [SPR-6909] #11574
- Having GET and POST methods for the same URL on different classes causes error when using annotation-driven [SPR-6822] #11488
- mvc:view-controller has too low priority [SPR-6782] #11448
- Spring MVC Binding Lifecycle differs between
@RequestBody
arguments and plain JavaBean arguments [SPR-6740] #11406 - Support destroy scripts in DataSourceInitializer [SPR-6717] #11383
- JSR-303
@Valid
validation is not invoked for@RequestBody
controller method arguments [SPR-6709] #11375 - Explicitly set response Content-Type in
@ResponseBody
[SPR-6702] #11368 @ExceptionHandler
methods should support naked beans as return values [SPR-6693] #11359- Converters that call back into the conversion system are dependent on GenericConversionService instead of the core strategy such as ConversionService interface [SPR-6620] #11286
- <jdbc:script /> does not allow you to specify statement delimiters. [SPR-6601] #11267
- Provide StandardMultipartResolver based on Servlet 3.0 Part API [SPR-6544] #11210
- Access URI template variables in view [SPR-6486] #11152
@MVC
should provide a way to invoke custom code at preBind stage [SPR-6472] #11138@MVC
should provide an "onBind" hook prior to automatic validation [SPR-6437] #11103- JdbcTemplate batch update - Managing batchSize inferior to the number of rows to be updated [SPR-6334] #11000
- Provide TestContext support for
@Configuration
classes [SPR-6184] #10852 - Upgrade Apache HttpClient to version 4.0 [SPR-6180] #10848
- PackagesToScan and LocalContainerEntityManagerFactoryBean [SPR-5943] #10612
- Add spring:url feature to FreeMarker macros [SPR-5937] #10606
- Be able to register a global (web-context wide) custom MessageCodesResolver [SPR-5187] #9860
- expose ServletHandlerMethodInvoker/Resolver to application code [SPR-5087] #9760
- [AnnotationMethodHandlerAdapter] Allow beans from context to be valid as handler method arguments [SPR-5073] #9747
- RedirectView with more flexible URL-building [SPR-2692] #7380
🪲 Bug Fixes
- Spring Web dependency on rome should be optional [SPR-8443] #13089
- Nesting level type index not respected when binding to fields [SPR-8394] #13041
- AnnotatedBeanDefinitionReader's constructor should inherit Environment of supplied BeanDefinitionRegistry [SPR-8393] #13040
- Conversion service in Spring 3.1 removes items from Lists in Maps causing Spring Security exceptions [SPR-8364] #13011
- ViewControllerBeanDefinitionParser causes java.lang.NoSuchMethodError: java.lang.String.isEmpty() [SPR-8363] #13010
- duplicate CacheManager classes [SPR-8334] #12982
- when using mvc:resources you have to add a BeanNameUrlHandlerMapping to your servlet config or
@Controllers
will be ignored [SPR-8289] #12937 - BeanFactoryPostProcessor breaks default post-processing of
@Configuration
classes [SPR-8269] #12917 - Typo in documentation [SPR-8268] #12916
- Non-empty type-level URL combined with method-level empty URL results in URL with trailing slash in RequestMappingHandlerMethodMapping [SPR-8255] #12903
- RequestMappingHandlerMethodMapping can't combine type and method
@RequestMapping
annotations when method is in parent class only [SPR-8248] #12896 - A direct match in AbstractHandlerMethodMapping can ignore other more specific matches [SPR-8247] #12895
- System environment related tests fail on Windows [SPR-8245] #12893
- NullPointerException if DefaultKeyGenerator if one argument is null [SPR-8238] #12886
- SPEL - Spring Expression Language Problem Issue [SPR-8228] #12877
- SPEL Property Accessors called out of order [SPR-8211] #12861
- Visibility mismatch in ConfigurationClassPostProcessor#processConfigBeanDefinitions [SPR-8200] #12849
- ExtendedBeanInfo Passes Empty Property Name to PropertyDescriptor Causing IntrospectionException: bad property name [SPR-8175] #12826
- SpEL varargs invocations can fail if primitives involved [SPR-8174] #12825
- Correct SQL error codes for Sybase in sql-error-codes.xml [SPR-8125] #12777
- Mapped interceptors are lost from AbstractUrlHandlerMapping [SPR-8094] #12749
- javaconf +
@Autowired
+@PostConstruct
+ deep context import bug [SPR-8080] #12735 - Build fails against IcedTea6 on Ubuntu [SPR-8078] #12733
@RequestMapping
in controllers fails to identify correct method while multiple params={"paramA=xxx","paramB=yyy"} [SPR-8059] #12714- Since the introduction of nested "beans" element, "id" is no longer of type xsd:ID [SPR-8054] #12709
- property-placeholder XSD is invalid and causes validation errors when used with attributes that worked in 3.0 like 'location' [SPR-8037] #12692
- Cache Abstraction - Expired cache elements cause return value null instead of calling method [SPR-8023] #12678
- Caching abstraction treats single method argument as array [SPR-8015] #12670
- Cache new future - unexpected behaviour when cache elements expire [SPR-8006] #12661
- Rome is marked as required dependency for spring-web artifact [SPR-7994] #12649
- CacheAspectSupport race-condition issue [SPR-7981] #12636
@Feature
methods do not accept@Value-annotated
parameters [SPR-7974] #12629- Mapped interceptors are not applied to current handler [SPR-7946] #12601
- ConfigurationClassEnhancer prevents BeanFactory from being GCd [SPR-7901] #12556
- DataBinder/BeanWrapper regression: Binding to a nested Map property fails in 3.0.5, works in 3.0.4 [SPR-7839] #12495
- "Dynamic" spelled "Dymaic" typo section 1.3 [SPR-7715] #12371
- ResourceDatabasePopulator does not regard escaped ' charachters [SPR-6688] #11354