⭐ New Features
- Add value alias for
@ContextConfiguration
's locations attribute [SPR-5713] #10383 - Subclasses of SpringJUnit4ClassRunner should be able to configure the default ContextLoader class [SPR-5710] #10380
- Request header filtering in
@RequestMapping
[SPR-5690] #10360 - Expose model object in RequestContext with public getter [SPR-5686] #10356
- improve thread-safety for entity/namespace resolvers [SPR-5679] #10350
- Allow EclipseLink 2.0.0.M1 in Spring-ORM [SPR-5676] #10347
- mergePropertiesIntoMap only works with String [SPR-5669] #10340
- avoid synchronization when AspectJExpressionPointcut.getShadowMatch hits cache [SPR-5668] #10339
- Request: lazy-init or 'only-if-needed' option for stereotype
@Component
source-annotated component-scan definitions [SPR-5662] #10333 @Property
annotation to "autowire" properties [SPR-5659] #10330- Support placeholders in
@Resource
annotation configurations [SPR-5656] #10327 - Mismatch between Javadoc and method signture BeanWrapper.getPropertyDescriptor(String) - throws clause [SPR-5650] #10321
- Support use of
@Qualifier
in conjunction with@Bean
methods [SPR-5643] #10314 - portlet global session ignored by by JSF request wrapper [SPR-5637] #10308
@RequestMapping
matching should be insensitive to trailing slashes [SPR-5636] #10307- OXM does not permit targetClass and mapping file for CastorMarshaller [SPR-5634] #10305
- Implicit /** mapping on type-level
@RequestMapping
[SPR-5631] #10302 - Extend Multiple
@PathVariable
Selection to allow delimeters other than / [SPR-5630] #10301 - Support use of
@Primary
and@Lazy
during component-scanning [SPR-5629] #10300 - Allow for exceptions to be annotated with a
@ResponseStatus
annotation [SPR-5625] #10296 - A default HandlerExceptionResolver that resolves standard Spring exceptions [SPR-5624] #10295
- Set Content-Type response header for Hessian services [SPR-5621] #10292
- spring:url tag should use htmlEscape instead of escapeXml for entity encoding [SPR-5605] #10276
- Eager validation for missing destroy methods [SPR-5602] #10273
- Make naming of
@Configuration
class processing-related artifacts consistent [SPR-5600] #10271 - Hook
@Configuration
class processing into context:component-scan/ and context:annotation-config/ through AnnotationConfigUtils#registerAnnotationConfigProcessors [SPR-5599] #10270 - Improve support for
@Aspect-annotated
@Configuration
classes by relaxing constraints in AbstractAspectJAdvisorFactory#isAspect() [SPR-5598] #10269 - Consolidate
@ScopedProxy
->@Scope
[SPR-5594] #10265 - Provide
@Lazy
annotation [SPR-5591] #10262 - Provide
@Primary
annotation [SPR-5590] #10261 - BeanPropertyRowMapper should default primitive property when receiving null value from result [SPR-5588] #10259
- Change MapSqlParameterSource to SqlParameterSource in executeFunction and executeObject methods [SPR-5570] #10241
- metadata clients cannot identify the source of a value type [SPR-5562] #10233
- xml value-type hard to determine for list/set or maps from the metadata [SPR-5556] #10227
- ConstructorArgumentValues returns collections with different order [SPR-5554] #10225
- Support
@Scope
(proxyMode) during component-scanning/autowiring lifecycle [SPR-5550] #10221 - Revise beans XSD for 3.0 [SPR-5549] #10220
- add support for arrays inside the xml configuration ( element) [SPR-5543] #10214
- Add XML HttpMessageConverters [SPR-5539] #10210
- Add unregisterManagedResource to MBeanExportOperations interface [SPR-5517] #10188
- Support Hessian 3.2.1 [SPR-5469] #10142
- XStreamMarshaller.setImplicitCollection(Map) is insufficient [SPR-5449] #10086
- Ordering of ServletContextAware and ApplicationContextAware callbacks makes testing FreeMarkerView (and similar classes) impossible [SPR-5398] #10071
- Scanned components don't have the ability of being "primary" candidates [SPR-5155] #9828
- Use field or parameter name as default value for
@Qualifier
[SPR-5152] #9825 - Spring TestContext Framework not compatible with JUnit 4.5 [SPR-5145] #9818
- Add DuplicateKeyException to DAO exception hierachy [SPR-5125] #9798
- AnnotationUtils.findAnnotation() should look for annotations on annotations [SPR-5085] #9758
- FreeMarkerView should support AllHttpScopesHashModel (analogous to FreeMarkerServlet in FreeMarker 2.3.14) [SPR-4962] #9637
- Adding hook into SQL State based exception translation [SPR-4899] #9575
- [Performance] CachedIntrospectionResults has wrong approach to caching. [SPR-4876] #9552
- AnnotationMethodHandlerAdapter should treat String return type with
@ModelAttribute
as model attribute instead of view name [SPR-4867] #9543 - Allow annotated methods on a Controller to be marked as exception handlers [SPR-4677] #9354
@RequestMapping
methods returning null have an implicit ModelAndView created [SPR-4518] #9195- When using request mappings at the type-level like /hotels/*, it should be possible to define a controller handler method for the root like /hotels [SPR-4494] #9172
@Autowired
dependencies and external configuration [SPR-4447] #9125- Comprehensive REST Support [SPR-4419] #9097
- org.springframework.jdbc.object.StoredProcedure is an abstract class, although it may be allowed to be used as a concrete class after the jira change SPR-3898 [SPR-3987] #8667
- Provide a concrete implementation of MappingSqlQuery (say RowMappingSqlQuery) which can be injected a RowMapper, so that we can put it in a config file [SPR-3986] #8666
- Enable custom default value for
@Transactional
's rollbackFor argument [SPR-3027] #7713 - Subclass DataIntegrityViolationException to represent main constraint types and translate SQL exceptons into appropriate subclass [SPR-2977] #7663
🪲 Bug Fixes
- AopUtils.getTargetClass assumes cglib proxies are always proxying classes [SPR-5694] #10364
- ConfigurationClassPostProcessor.isConfigurationClassBeanDefinition() makes classloading assumptions that don't hold true in an OSGi environment [SPR-5693] #10363
- SPR-5668 introduced occasional ConcurrentModificationException in callees of AspectJExpressionPointcut.getShadowMatch() [SPR-5687] #10357
- template.mf contains invalid range for org.hibernate.ejb [SPR-5685] #10346
- Spring 3 library omits org.springframework.expression [SPR-5675] #10345
- SPEL: Projections don't work within templates (ParseException) [SPR-5673] #10344
- SPEL: Inconsistent implementation of ReflectivePropertyResolver - canRead vs. read for null targets [SPR-5663] #10334
- SPEL: NullPointerException when passing null values as parameters to method calls [SPR-5661] #10332
- Race condition in AutowiredAnnotationBeanPostProcessor.AutowiredMethodElement.inject()? [SPR-5658] #10329
- RestTemplate handles redirects incorrectly [SPR-5653] #10324
- Incorrect .classpath file for org.springframework.context [SPR-5645] #10316
- ASM bundle contains an import package for org.objectweb.asm [SPR-5618] #10289
- Optional Ivy dependencies are mandatory in the OXM bundle's manifest [SPR-5617] #10288
- Spring library does not include the ASM and OXM bundles [SPR-5616] #10287
- Regression: InterfaceBasedMBeanInfoAssembler setManagedInterfaces fails if interfaces are passed in [SPR-5615] #10286
- NPE in AbstractCachingLabeledEnumResolver.getLabeledEnumByLabel following garbage collection [SPR-5577] #10248
- typo in RestTemplate javadoc [SPR-5571] #10243
- ASM based SimpleMetadataReader returns also annotations on members [SPR-5545] #10216
- ReSTful URLs with content type extension do not work properly [SPR-5537] #10208
- RestTemplate does not do HTTP GET if it should [SPR-5536] #10207
- PermGen leak in GenericTypeResolver's typeVariableCache [SPR-5462] #10135
- All maven2 artifactIds change (will break a lot of builds for maven users) [SPR-5385] #10058
- Race-Condition in RMIServiceExporter [SPR-5263] #9893