-
Notifications
You must be signed in to change notification settings - Fork 38k
/
changelog.txt
1607 lines (1487 loc) · 119 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
SPRING FRAMEWORK CHANGELOG
===========================
https://www.spring.io
Changes in version 3.2.18 (2016-12-21)
-------------------------------------
fixed Constructor sets the source incorrectly in org.springframework.beans.PropertyValue (SPR-8337)
fixed ObjectToObjectConverter should be able to use constructors on non-public classes (SPR-14304)
fixed Async advisor retrieval blocks when triggered by singleton init method (SPR-14324)
fixed Deadlock while creating a new thread on bean initialization with transactional code invocation (SPR-14388)
fixed CronSequenceGenerator causes StackOverflowError with reversed range values (SPR-14462)
fixed Ineffective synchronization in StandardTypeConverter constructor (SPR-14465)
fixed ResourcePatternUtils.getResourcePatternResolver does not accept null arg (SPR-14500)
fixed LinkedCaseInsensitiveMap doesn't override HashMap.clone() (SPR-14509)
fixed StackOverflowError for advisor search against factory-bean reference to FactoryBean (SPR-14551)
fixed StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) (SPR-14718)
fixed Concurrency problem in DeferredResult: potential double execution of handleResult (SPR-14978)
fixed MBeanExporter fails against null beans (SPR-15031)
improved ModelAndViewResolver still refers to raw Class type (SPR-7860)
improved Allow method inlining of ObjectUtils.nullSafeEquals() (SPR-14349)
improved Normalize resource URL in ResourceServlet (SPR-14946)
improved documentation for @Bean(autowire=NO) (SPR-14282)
improved documentation Label "for" attribute is wrongly documented as required (SPR-14287)
improved documentation of SpEL behavior when comparing value to null (SPR-14361)
improved documentation of cache abstraction (SPR-14399)
improved documentation og SpEL and Date Literals (SPR-14987)
Changes in version 3.2.17 (2016-05-06)
-------------------------------------
fixed AbstractRequestLoggingFilter appends null query string (SPR-14244)
fixed Deadlock possible with AspectJ aspects and multi-threading (SPR-14241)
fixed NPE thrown when calling methods with an empty @Caching annotation (SPR-14162)
fixed @RequestHeader HttpHeaders fails with NPE against null header value (SPR-14091)
fixed ModelAndView is replaced when a RedirectView is used (SPR-14045)
fixed Scripted beans not updated after a script compilation error in getScriptedObjectType (SPR-14007)
fixed TimerManagerTaskScheduler.TimerScheduledFuture.getDelay is inverted (SPR-13977)
fixed AbstractMarshaller's DocumentBuilderFactory instance may be used by several threads simultaneously (SPR-13935)
fixed ReflectiveMethodResolver chooses parent class over child for static methods (SPR-13918)
fixed NullPointerException while building error message in InvocableHandlerMethod (SPR-13917)
fixed Handle RejectedExecutionException in WebAsyncManager (SPR-13836)
improved MVC config path config options (SPR-14186)
improved local resolution of Quartz XSD (SPR-13706)
improved SimpleTriggerFactoryBean and CronTriggerFactoryBean usage without jobDetail (SPR-13604)
improved XML example javadoc of @EnableScheduling (SPR-14145)
improved documentation example of MessageSource (SPR-14003)
improved documentation of ResponseEntityExceptionHandler.handleExceptionInternal (SPR-13869)
improved documentation at section 17.4 Handler mappings (SPR-13832)
Changes in version 3.2.16 (2015-12-17)
-------------------------------------
fixed Jdbc4SqlXmlHandler should return null instead of NPE (SPR-13782)
fixed AbstractApplicationContext.isRunning throws IllegalStateException when called too early (SPR-13667)
fixed CommonsMultipartFile.getOriginalFilename() does not strip file path properly (SPR-13662)
fixed Content-Disposition added for @ResponseBody methods explicitly mapped to ".html" or other extensions (SPR-13629)
fixed AbstractJdbcCall's compiled variable should be declared as volatile (SPR-13617)
fixed Content-Disposition header causes download in browser for Spring Boot Actuator endpoints (SPR-13587)
improved support for Microsoft SQL Server driver version 4 and above (SPR-13772)
improved BeanFactoryAnnotationUtils.qualifiedBeanOfType should not instantiate all beans of given type before checking qualifier (SPR-13741)
improved BeansException warn logging after startup failure (SPR-13663)
improved Content-Disposition with fixed file name "f.txt" so that it's less confusing (SPR-13643)
improved CallMetaDataContext to avoid NPE for anonymous SqlParameter (SPR-13628)
improved Content-Disposition header to be skipped when status != 2xx (SPR-13588)
improved documentation of Jackson2ObjectMapperFactoryBean (SPR-13765)
improved fix cron trigger example in reference documentation (SPR-10474)
Changes in version 3.2.15 (2015-10-15)
-------------------------------------
protect against RFD exploits, see https://pivotal.io/security/cve-2015-5211 (SPR-13548)
fixed whether HttpInputMessage.getBody() is allowed to return null (SPR-13563)
fixed JCacheCache doesn't recognize null values in other JVMs (SPR-13553)
fixed AbstractEmbeddedDatabaseConfigurer.shutdown does not close JDBC resources (SPR-13474)
fixed DeferredResult not thread-safe for isSetOrExpired call (SPR-13451)
fixed ConcurrentModificationException when doing a merge on AbstractEnvironment (SPR-13213)
avoid ambiguous property warning for setter methods with multiple parameters (SPR-13349)
improved documentation of ContentNegotiationManager reference in MVC chapter (SPR-13558)
improved documentation on readonly and disabled flags in spring-form.tld (SPR-13397)
improved documentation of AUTO_ACKNOWLEDGE semantics with SimpleMessageListenerContainer (SPR-13278)
Changes in version 3.2.14 (2015-06-30)
-------------------------------------
fixed disable DTD by default when parsing untrusted XML input (SPR-13136)
fixed remoting over JMS with receiveTimeout blocks service forever (SPR-13052)
fixed NPE when using @args as pointcut (SPR-13102)
fixed NPE for alias resolved to null in SimpleAliasRegistry (SPR-13106)
fixed NPE if CustomBooleanEditor is configured with allowEmpty=false (SPR-13010)
fixed infinite loop in PatternMatchUtils (SPR-12971)
fixed infinite loop when CronSequenceGenerator constructor is called with invalid increments (SPR-12871)
fixed incorrect value in InvalidPropertyException message from BeanWrapperImpl.setPropertyValue (SPR-12866)
fixed SpEL chooses wrong method to invoke when varargs method is present (SPR-12803)
fixed StandardMultipartHttpServletRequest.StandardMultipartFile not serializable (SPR-12975)
fixed EncodedResource does not include charset in equals() implementation (SPR-12767)
fixed Specified MVC resource at root level not considered "under location" (SPR-12747)
fixed deadlock publishing event while creating listener bean (SPR-12739)
fixed NPE in ServletUriComponentsBuilder#initFromRequest (SPR-12723)
fixed @Scheduled handling with multiple proxied target classes implementing the same interface (SPR-12709)
upgraded to ASM 5.0.4 (SPR-13039)
improved documentation of Lifecycle callbacks (SPR-12855)
improved documentation of null handling in Converter (SPR-12870)
improved documentation of acknowledgment modes (SPR-12705)
improved javadoc of ModelAttributeMethodProcessor.validateIfApplicable (SPR-12655)
improved documentation of SimpleJdbcInsert (SPR-12639)
Changes in version 3.2.13 (2014-12-30)
-------------------------------------
fixed Java 8 bridge method handling can lead to false positive detection of autowired annotations (SPR-12187)
fixed webjar stops working (SPR-12432)
fixed introspection with BeanUtils started failing against java.awt.Window (SPR-12434)
fixed embedded derby database uses derby.log (SPR-12437)
fixed use of the same configuration annotation of javaconfig (SPR-12442)
fixed NPE in org.springframework.core.MethodParameter.getParameterName (SPR-12453)
fixed unable to initialize WebAsyncTask with executorName (SPR-12457)
fixed problem with static methods conflicting with instance methods (SPR-12502)
fixed prototype with changing bean class does not get populated with dependencies after type switch (SPR-12526)
fixed hashCode method of AbstractFallbackTransactionAttributeSource.DefaultCacheKey doesn't take targetClass into account (SPR-12536)
fixed AbstractApplicationEventMulticaster "lost" application listener (SPR-12545)
fixed duplicated interceptors in HandlerExecutionChain after intermediate getInterceptors() call (SPR-12566)
update consistent bridge method handling in annotation post-processors (SPR-12495)
improved misleading documentation for SqlRowSet (SPR-12476)
improved documentation after SPR-3542 (SPR-12570)
Changes in version 3.2.12 (2014-11-11)
-------------------------------------
fixed directory traversal with static resource handling (CVE-2014-3625) (SPR-12354)
log context cache statistics in the TestContext framework (SPR-12409)
fixed ConfigurationClassUtils fails to introspect inner classes with dot name syntax (SPR-12390)
fixed ResponseStatusExceptionResolver does not get a MessageSource injected in the MVC Java config (SPR-12380)
fixed NPE inTilesConfigurer when no definitions found (SPR-12363)
fixed @Import in another annotation results in double scan (SPR-12334)
fixed private @Scheduled methods end up on 'empty' proxy instance in case of CGLIB auto-proxying (SPR-12308)
fixed Provider<...> declaration for @Value method argument fails with TypeMismatchException (SPR-12297)
fixed DataSourceTransactionManager closes JDBC connection on doBegin failure but leaves it attached to transaction object (SPR-12280)
fixed web Async responses force concurrentResult.toString() call (SPR-12253)
fixed LiveBeansView.generateJson generates invalid JSON when resources already double-quoted (SPR-12252)
allow for further locking optimizations for the retrieval of non-singleton beans (SPR-12250)
improved error messages for MockRestServiceServer (SPR-12230)
allow spring HTTP clients to enforce RFC 6265 (cookies in a single header) (SPR-12196)
fixed @Qualifier resolution with Spring Batch parent/child context arrangement (SPR-12191)
improved Scheduled/JmsListenerAnnotationBeanPostProcessor to not scan every scoped instance (SPR-12189)
fixed HttpHeaders should accept empty Content-Type header (SPR-12173)
add log warning for single optional constructor when no default constructor to fall back to (SPR-12161)
fixed util:map does not recognize the attribute of value-type (SPR-10994)
removed outdated ContextLoaderServlet from the documentation reference (SPR-7725)
Changes in version 3.2.11 (2014-09-04)
-------------------------------------
fixed cachingConnectionFactory should catch exceptions on logical close (SPR-12148)
allow Cache.get(Object key, Class<T> type) to be more explicit about what to do in case of a type mismatch (SPR-12145)
fixed plain FactoryBean declaration on @Bean method leads to early call (pre injection) (SPR-12141)
fixed performance issue on ResolvableType cache (SPR-12122)
fixed GuavaCacheManager ignores cache specification due to eager initialization of internal cache map with static cache names (SPR-12120)
fixed mockMvc security filters causes FileUploadException: the request was rejected because no multipart boundary was found (SPR-12114)
fixed ServerEndpointExporter causes application context refresh to fail with an NPE when used in a Spring Boot app (SPR-12109)
update Apache HttpComponents to 4.3.5 - CVE-2014-3577: Apache HttpComponents client: Hostname verification susceptible to MITM attack (SPR-12100)
fixed shallowEtagHeaderFilter doesn't support Servlet 3.1 setContentLengthLong (SPR-12097)
exclude spring-framework-bom artifacts from release distributions (SPR-12087)
include all source artifacts in published sources jars (SPR-12085)
fixed BeanNameViewResolver should not try to use non-View beans (SPR-12079)
updated tiles 3 TilesViewResolver to accept custom TilesView subclasses (SPR-12075)
fixed includeFilters and excludeFilters of @ComponentScan cause failures when used in meta-annotations (SPR-12065)
allow AbstractTypeHierarchyTraversingFilter to be more lenient when loading types (SPR-12042)
fixed incorrect documentation for AbstractAnnotationConfigDispatcherServletInitializer.getServletConfigClasses() (SPR-12028)
fixed ConcurrentMapCacheManager has interdependent setters (SPR-12026)
fixed documentation typo (SPR-12020)
fixed Spring may invoke @Bean methods too early in case of a circular reference (SPR-12018)
fixed RestTemplate with InputStreamResource does not work if Content-Length is not set (SPR-12017)
fixed AbstractMessageListenerContainer#doExecuteListener can cause a dropped message if using CLIENT_ACKNOWLEDGE and the container is stopped and subsequently started again. (SPR-12015)
fixed exceptions thrown during AbstractApplicationContext.refresh() not being logged right when they are caught (SPR-12010)
fixed changes to AbstractApplicationEventMulticaster in 3.2.9 break HttpSessionEventPublisher in Google AppEngine Runtime (SPR-12002)
fixed NPE in SelectedValueComparator with null bound value (SPR-12001)
fixed StaxStreamXMLReader ignores significant whitespace (SPR-12000)
fixed user destinations docs are missing the brokerPrefix (SPR-11992)
revert (SPR-11973) when bugfix verified in JDK 1.8.0_20 (SPR-11974)
fixed UriComponentsBuilder.fromUriString may not parse correctly when there is no path (SPR-11970)
fixed getBean(Object.class) fails when introspecting Environment bean (SPR-10542)
fixed injecting EXTENDED @PersistenceContext into JUnit 4 test class causes NoSuchBeanDefinitionException (SPR-8834)
fixed XmlBeanDefinitionReader runs 10x slower due to resetBeanDefinition check (SPR-8318)
remove outdated IDE, JIRA and Tomcat references (SPR-7521)
Changes in version 3.2.10 (2014-07-15)
-------------------------------------
restored backward compatibility in RestTemplate's messageConverters (SPR-11962)
consistent declaration of private static final logger variables (SPR-11905)
fixed documentation links (SPR-11935)
allow HttpHeaders to return getAllow() if it was previously set to an empty collection (SPR-11917)
improved performance of ReflectionUtils.isCglibRenamedMethod (SPR-11894)
provide compatibility with Java 8 (SPR-11979, SPR-11889)
fixed MBeanExportConfiguration.SpecificPlatform issue (SPR-11877)
allow manually registered transaction manager to be recognized by qualifiedBeanOfType (SPR-11915)
fixed misleading exception message for using JPA with custom IsolationLevels (SPR-8325)
prevented Objects created by FactoryBeans from being processed multiple times by BeanPostProcessors if beans are created lazily (SPR-11937)
fixed performance regression for custom autowireBean calls with many properties (SPR-11875)
fixed ReflectionUtils slow down application startup on WebSphere (SPR-11882)
revisit class cache in CachedIntrospectionResults (SPR-11867)
fixed JBoss EAP 5.1.1 VFS compatibility (SPR-11887)
fixed various Portlet issues (SPR-11295, SPR-11816)
removed shared state from URIComponentsBuilder across calls of .build() (SPR-11885)
improved unclear error message on BeanPostProcessor returning null (SPR-11951)
fixed isGlobalRollbackOnly always returns 'false' with WebSphereUOWTransactionManager (SPR-11876)
Changes in version 3.2.9 (2014-05-20)
-------------------------------------
added basic Java 8 bytecode compatibility for Spring 3.2.x through ASM 5.0.2 (SPR-11656, SPR-11719)
fixed potential excessive memory and CPU usage (SPR-11545, SPR-11520, SPR-11606, SPR-11720, SPR-9274)
fixed cache key issues for methods with arguments of array types (SPR-11505)
fixed FlashMap retrieval when target parameters are encoded (SPR-11504)
fixed SpringBeanELResolver.setValue throws PropertyNotWritableException issue (SPR-11502)
optimized handling of @Bean method override regression with return type narrowing on JDK 8 (SPR-11718)
prevented double evaluation of method arguments in SpEL (SPR-11445)
fixed reinjection of Servlet mocks into test instance between TestNG test methods (SPR-11626)
fixed If-Modified-Since header is parsed as HTTP-date; but IE 10 sends length (SPR-11727)
fixed unsafe fallback pointcut construction in AspectJExpressionPointcut (SPR-9335)
updated UrlResource.exists() to properly detect JBoss vfszip resources (SPR-11676)
fixed potential NPE with SpringProperties, ConstructorResolver and JRubyScriptUtils (SPR-11721, SPR-11517, SPR-11747)
consider parent definitions with overriding bean definition message (SPR-9671(
improved exception message for failed property access in SpEL (SPR-11535)
fixed Spring MVC Test async result timing issue (SPR-11516)
treat empty log config refresh interval as infinite interval in Log4jWebConfigurer (SPR-11507)
improve CollectionToCollectionConverter.convert() for untyped collections (SPR-11479)
fixed XmlValidationModeDetector length of a string is always greater than index of any of its characters (SPR-11477)
improve memory consumption with MarshallingView (SPR-11646)
fixed SpEL issues when working with Maps (SPR-11609, SPR-9861)
add ResizableByteArrayOutputStream and ByteArrayOutputStream capacities (SPR-11594)
logged Forging in DispatcherServlet via requestURI (SPR-11591)
fixed BufferedImageHttpMessageConverter to no longer fail if JAI is installed (SPR-11581)
updated AbstractMarshaller to avoid SAXSource workaround when processExternalEntities=true (SPR-11737)
close Resource's input stream when using ResourceHttpRequestHandler (SPR-11644)
consider proxy interfaces in AbstractAdvisingBeanPostProcessor.isEligible(...) (SPR-11725)
protect against security exploits via system identifier in DTD declaration (SPR-11768)
fixed Access Denied exception within Spring MVC application on WebSphere 8.x (SPR-11758)
fixed servlet 3 multipart parameter binding on Weblogic12c (SPR-11074)
updated ConfigurationClassParser.invokeAwareMethods(...) to consider EnvironmentAware (SPR-11744)
fixed JDBC findColumn result in the case of duplicate column labels (SPR-11786)
improved prefix detection in StringUtils.cleanPath (SPR-11793)
fixed JMS problem with Oracle AQ when underlying DataSource is decorated (SPR-11791, SPR-10829)
support lazy resolution with StandardServletMultipartResolver (SPR-11730)
fixed StringUtils.parseLocaleString issue where locale variant cannot contain country code (SPR-11806)
detected NoClassDefFoundError within BeanInstantiationException for getTestExecutionListeners (SPR-11804)
Changes in version 3.2.8 (2014-02-18)
-------------------------------------
* fixed potential LinkageError with aop:scoped-proxy (SPR-11398)
* fixed various memory leaks (SPR-11440, SPR-10785)
* added processExternalEntities support to OXM (SPR-11376)
* fixed URL mapping issue (SPR-11101)
* prevented unwanted side-effects from PreparedStatements (SPR-11386)
* restore correct equals/hashCode for AbstractBeanDefinition (SPR-11420)
* fixed various HTML form issues (SPR-10837, SPR-11426)
* wraped runtime-registered EhCacheCacheManager caches with TransactionAwareCacheDecorator (SPR-11407)
* fixed StringIndexOutOfBoundsException in AbstractErrors for class-level JSR-303 validator (SPR-11374)
* fixed off-by-one regression in AbstractMethodMockingControl (SPR-11385)
* fixed potential ClassCastException in RequestContextListener when destroying the request object (SPR-11378)
* fixed various stream closing issues (SPR-11411, SPR-11413)
* fixed broken documentation links (SPR-11404)
* improved error reporting for issues related to @Controller types requiring AOP proxing (SPR-11281)
* consider nonPublicAccessAllowed flag and SecurityManager with resolveFactoryMethodIfPossible method (SPR-11422)
* don't lazily populate a hash field for Objects with multi-threaded access (SPR-11428)
* fixed locale specific unit test failures (SPR-11392)
* explicitly skip BindingResult when searching for a model object in MarshallingView (SPR-11417)
* fixes potential malformed JSON from LiveBeansView (SPR-11366)
Changes in version 3.2.7 (2013-12-12)
-------------------------------------
* fixed memory leaks with @Async (SPR-11275, SPR-11276)
* restored full Java 5 compatibility (SPR-11313, SPR-11349, SPR-11321)
* fixed various dependency compatibility issues (SPR-11359, SPR-11265, SPR-11362, SPR-11284)
* improved performance and reduced memory consumption for some edge cases (SPR-11343, SPR-9014, SPR-11344, SPR-11304)
* fixed WebSphere compatibility issue (SPR-11341, SPR-11297)
* fixed ServletWebRequest.checkNotModified() methods to treat HEAD identically to GET (SPR-11317)
* fixed various regression issues (SPR-11320, SPR-11246, SPR-11231)
* fixed theme resolution fails with "IllegalArgumentException" issue (SPR-11128)
* fixed @Enable registrars subclass issues (SPR-11251)
* allowed consolidation of all configuration into the "root" context with AbstractAnnotationConfigDispatcherServletInitializer (SPR-11357)
* provided alternative RestTemplate constructor to avoid default MessageConverter creation (SPR-11351)
* handle NoClassDefFoundError for TestExecutionListeners consistently (SPR-11347)
* fixed @Bean meta-annotation detection when using ASM (SPR-10488)
* provide access to SimpleTriggerFactoryBean property startTime (SPR-10940)
* added patch() to MockMvcRequestBuilders (SPR-11299)
* provided a mechanism for adding ApplicationContextInitializers to DispatcherServlet's ApplicationContext (SPR-11314)
* fixed various documentation issues (SPR-3983, SPR-11364, SPR-11331)
* enabled ServletTestExecutionListener by default in abstract base test classes (SPR-11340)
* fixed type comparison in ReflectionHelper.getTypeDifferenceWeight (SPR-11306)
* improved logging and exception information (SPR-11346, SPR-11333)
* fixed read/write method mismatch problems with BeanWrapper (SPR-11361)
* fixed context:component-scan element in the mvc-cofig.xml (SPR-11221)
* fixed XMLEventStreamWriter handleing for writeEmptyElement() followed by writeAttribute() (SPR-11254)
* fixed CronTriggerFactoryBean to allow calendar name and description to be specified (SPR-9771)
Changes in version 3.2.6 (2013-12-12)
-------------------------------------
* added Maven bill-of-materials POM
* fixed BeanUtils.copyProperties() issue caused by recently changes to GenericTypeAwarePropertyDescriptor (SPR-11209)
* fixed issue with ServletTestExecutionListener breaking existing code (SPR-11144)
* fixed SpEL ReflectivePropertyAccessor to not consider "is" methods with non boolean returns (SPR-11142)
* support multiple comma-separated values in X-Forwarded-Host header (SPR-11140)
* fixed tests related to java.beans.BeanInfo changes in JDK8-b117 (SPR-11139)
* added synchronization to EhCacheFactoryBean.afterPropertiesSet (SPR-11132)
* fixed dependency injection issue when using ManagedMap or ManagedList in BeanDefinitionParser (SPR-11131)
* fixed support for combining multiple @Cacheable within @Caching annotation (SPR-11124)
* allow autowire qualified scoped-proxy @Bean definitions (SPR-11116)
* fixed type resolution fails for uninitialized factory-method declaration issue (SPR-11112)
* fixed "CglibAopProxy: Unable to proxy method" warning when bean class contains static final method (SPR-11107)
* improved performance for repeated JDBC 3.0 getParameterType calls in StatementCreatorUtils (SPR-11100)
* fixed minor issue with prior fix for CVE 2010-1622 (SPR-11098)
* added mapping for additional Sybase error code to DataIntegrityViolationException (SPR-11097)
* fixed issue with "!profile" selector XML (SPR-11093)
* fixed set statistics issues with EhCache (SPR-11092, SPR-11080)
* fixed classpath scanning issue on private meta-attributes (SPR-11091)
* fixed potential NPE when calling stored procedures (SPR-11076)
* added synchronization to MBeanExporter & MBeanRegistrationSupport (SPR-11002)
* removed integer conversion from JmsListenerContainerParser (SPR-10986)
* fixed @ResourceMapping issue with Portlets (SPR-10791)
Changes in version 3.2.5 (2013-11-06)
-------------------------------------
* fixed type prediction for generic factory method with conversion of method arguments (SPR-10411)
* fixed GenericTypeResolver issues relating to ParameterizedType (SPR-10819)
* allow indexed constructors to be used with @Autowire resolution (SPR-11019)
* refined JavaConfig overrides algorithm (SPR-10988, SPR-10992)
* fixed multiple calls to @Autowire setters when defining several beans of the same class (SPR-11027)
* provided more lenient fallback checks for setter injection (SPR-10995)
* allowed AnnotationConfigWebApplicationContext.register to be called multiple times (SPR-10852)
* fixed various SpEL issues (SPR-9495, SPR-10452, SPR-10928, SPR-10884, SPR-10953, SPR-10716, SPR-10486, SPR-11031)
* added XStream catch-all converter (SPR-10821)
* fixed issue with AOP Advisor being silently skipped during creation (SPR-10430)
* fixed use of configured prefix for Jackson message converters (SPR-10817)
* fixed SimpleJdbcCall function return issues (SPR-10606)
* protected against memory leak in AntPathMatcher (SPR-10803)
* fixed memory leak in AbstractBeanFactory (SPR-10896)
* fixed Ehcache RMI replication issue (SPR-10904)
* fixed ArrayStoreException with ASM reading of enum subclass (SPR-10914)
* prevented duplicate scan of @Import annotations (SPR-10918)
* fixed issues using non-shareable @Resource (SPR-10931)
* ensured malformed content type is translated to 415 status code (SPR-10982)
* fixed issues when converting a single element array to object (SPR-10996)
* allow override of @ContextConfiguration initializer when using @ContextHierarchy (SPR-10997)
* fixed issue with ordering of @PropertySource values (SPR-10820)
* fixed parsing issues with JNDI variables (SPR-11039)
* fixed MockHttpServletRequestBuilder handling parameter without value (SPR-11043)
* fixed ClasspathXmlApplicationContext inherit/merge of parent context environment (SPR-11068)
* fixed wrong translation of MS SQL error code (SPR-10902)
* fixed JMSTemplate issues when used with Oracle AQ (SPR-10829)
* fixed AbstractMethodMockingControl off-by-one error (SPR-10885)
* fixed potential NPE with JaxB2Marshaller (SPR-10828)
* fixed potential NPE with RestTemplate (SPR-10848)
* fixed potential NPE in AbstractApplicationEventMulticaster (SPR-10945)
* fixed potential NPE with RedirectView (SPR-10937)
* fixed NPE with ExtendedBeanInfo on IBM J9 VM (SPR-10862)
* improved subclassing support for RequestMappingHandlerMapping (SPR-10950)
* made AnnotationConfigUtils.processCommonDefinitionAnnotations public (SPR-11032)
* removed unnecessary char[] allocation with NamedParameterUtils (SPR-11042)
* refined logging output (SPR-10974, SPR-11017)
* minor documentation updates (SPR-10798, SPR-10850, SPR-10927)
Changes in version 3.2.4 (2013-08-06)
-------------------------------------
* fixed potential security risk when using Spring OXM with JAXB (SPR-10806)
* support for Quartz 2.2 (SPR-10775)
* updated spring-instrument manifest to include JDK 7 redefine/retransform attributes (SPR-10731)
* TypeDescriptor class is marked as Serializable now (SPR-10631)
* ConfigurationClassPostProcessor is Ordered.HIGHEST_PRECEDENCE now (SPR-10645)
* @ImportResource supports ${...} placeholders as well (SPR-10686)
* BeanFactory's getBeansWithAnnotation ignores abstract bean definitions (SPR-10672)
* fixed regression with non-String value attributes on custom stereotypes (SPR-10580)
* fixed regression in nested placeholder resolution in case of ignoreUnresolvablePlaceholders (SPR-10549)
* fixed SpEL's MethodExecutor to correctly cache overloaded methods (SPR-10684)
* fixed ClassFilterAwareUnionMethodMatcher equals implementation (SPR-10604)
* introduced latest CGLIB UndeclaredThrowableStrategy changes for better memory usage (SPR-10709)
* fixed regression with AspectJ-based @Async handling in case of no executor set (SPR-10715)
* proper parsing of JPA's "exclude-unlisted-classes" element with a nested "true"/"false" value (SPR-10767)
* resource-based PlatformTransactionManager implementations defensively handle Errors on begin (SPR-10755)
* re-introduced RmiInvocationWrapperRTD.xml for WebLogic which has been missing in 3.2 (SPR-10649)
* Jaxb2Marshaller scans for @XmlRegistry annotation as well (SPR-10714)
* XStreamMarshaller's "getXStream() method is non-final again (SPR-10421)
* DelegatingFilterProxy avoids synchronization for pre-resolved delegate (SPR-10413)
* fixed regression in @RequestParam empty value handling (SPR-10578)
* fixed ResourceHttpRequestHandler's locations-list-empty warn log (SPR-10780)
* fixed ContentNegotiatingViewResolver regression in case of no content type requested (SPR-10683)
* fixed MappingJackson(2)JsonView's handling of a prefixJson="false" value (SPR-10752)
* added configurable JSON prefix handling to MappingJackson(2)HttpMessageConverter (SPR-10627)
* several UriComponentsBuilder refinements (SPR-10779, SPR-10701)
* several HttpHeaders refinements (SPR-10713, SPR-10648)
Changes in version 3.2.3 (2013-05-17)
-------------------------------------
* compatibility with OpenJDK 8 for target 1.5/1.6/1.7 compiled Spring Framework 3.2.x applications (SPR-9639)
* compatibility with OSGI-style use of generics in source code that got compiled to 1.4 byte code (SPR-10559)
* consistent detection of Order annotation in superclasses and interfaces (SPR-10514)
* fixed regression with type detection for child bean definitions (SPR-10374)
* fixed configuration class overriding in terms of superclasses (SPR-10546)
* minimized ASM usage during configuration class processing (SPR-10292)
* added public "getName()" accessor to MethodReference (SPR-10422)
* fixed ReflectiveMethodResolver to avoid potential UnsupportedOperationException on sort (SPR-10392)
* JdbcTemplate defensively uses JDBC 3.0 getParameterType call for Oracle driver compatibility (SPR-10385)
* introduced public ArgumentPreparedStatementSetter and ArgumentTypePreparedStatementSetter classes (SPR-10375)
* fixed BeanPropertyRowMapper to only prefix actual upper-case letters with underscores (SPR-10547)
* HibernateJpaDialect supports Hibernate 4.2 as a JPA provider now (SPR-10395)
* fixed Jaxb2Marshaller's partial unmarshalling feature to consistently apply to all sources (SPR-10282)
* ContentNegotiationManager properly handles HttpMessageConverter checking for Accept header "*/*" (SPR-10513)
* SimpleMappingExceptionResolver prefers longer mapping expression in case of same exception depth (SPR-9639)
* ServletContextResourcePatternResolver supports Tomcat-style "foo#bar.war" deployment unit names (SPR-10471)
* fixed potential deadlock with DeferredResult timeout handling on Tomcat (SPR-10485)
* fixed regression with ResourceHttpMessageConverter accidentally not closing underlying files (SPR-10460)
* fixed regression with JSP form tag prepending the context/servlet path (broke use for Portlets; SPR-10382)
* added "jsonPrefix" property to MappingJackson(2)JsonView, allowing for a custom prefix (SPR-10567)
* changed MappingJackson(2)JsonView's "writeContent" template method to include "jsonPrefix" String (SPR-10567)
Changes in version 3.2.2 (2013-03-14)
-------------------------------------
* official support for Hibernate 4.2 (SPR-10255)
* fixed missing inter-dependencies in module POMs (SPR-10218)
* marked spring-web module as 'distributable' in order for session replication to work on Tomcat (SPR-10219)
* DefaultListableBeanFactory caches target type per bean definition and allows for specifying it in advance (SPR-10335)
* DefaultListableBeanFactory clears by-type matching cache on runtime register/destroySingleton calls (SPR-10326)
* ConfigurationClassPostProcessor consistently uses ClassLoader, not loading core JDK annotations via ASM (SPR-10249)
* ConfigurationClassPostProcessor detects covariant return type mismatch, avoiding infinite recursion (SPR-10261)
* ConfigurationClassPostProcessor allows for overriding of scoped-proxy bean definitions (SPR-10265)
* "depends-on" attribute on lang namespace element actually respected at runtime now (SPR-8625)
* added locale-independent "commonMessages" property to AbstractMessageSource (SPR-10291)
* added "maximumAutoGrowSize" property to SpelParserConfiguration (SPR-10229)
* allow for ordering of mixed AspectJ before/after advices (SPR-9438)
* added "beforeExistingAdvisors" flag to AbstractAdvisingBeanPostProcessor (SPR-10309)
* MethodValidation/PersistenceExceptionTranslationPostProcessor apply after existing advisors by default (SPR-10309)
* fixed regression in SpringValidatorAdapter's retrieval of invalid values (SPR-10243)
* support 'unless' expression for cache veto (SPR-8871)
* @Async's qualifier works for target class annotations behind a JDK proxy as well (SPR-10274)
* @Scheduled provides String variants of fixedDelay, fixedRate, initialDelay for placeholder support (SPR-8067)
* refined CronSequenceGenerator's rounding up of seconds to address second-specific cron expressions (SPR-9459)
* @Transactional in AspectJ mode works with CallbackPreferringPlatformTransactionManager (WebSphere) as well (SPR-9268)
* LazyConnectionDataSourceProxy catches setReadOnly exception analogous to DataSourceUtils (SPR-10312)
* SQLErrorCodeSQLExceptionTranslator tries to find SQLException with actual error code among causes (SPR-10260)
* added "createTemporaryLob" flag to DefaultLobHandler, using JDBC 4.0's createBlob/Clob mechanism (SPR-10339)
* deprecated OracleLobHandler in favor of DefaultLobHandler for the Oracle 10g driver and higher (SPR-10339)
* deprecated (NamedParameter)JdbcTemplate's queryForInt/Long operations in favor of queryForObject (SPR-10257)
* added useful query variants without parameters to NamedParameterJdbcTemplate, for convenience in DAOs (SPR-10256)
* "packagesToScan" feature for Hibernate 3 and Hibernate 4 detects annotated packages as well (SPR-7748, SPR-10288)
* HibernateTransactionManager for Hibernate 4 supports "entityInterceptor(BeanName)" property (SPR-10301)
* DefaultJdoDialect supports the JDO 2.2+ isolation level feature out of the box (SPR-10323)
* DefaultMessageListenerContainer invokes specified ExceptionListener for recovery exceptions as well (SPR-10230)
* DefaultMessageListenerContainer logs recovery failures at error level and exposes "isRecovering()" method (SPR-10230)
* added "mappedClass" property to Jaxb2Marshaller, introducing support for partial unmarshalling (SPR-10282)
* added "entityResolver", "classDescriptorResolver", "doctypes" and further properties to CastorMarshaller (SPR-8470)
* deprecated CastorMarshaller's "object" property in favor of "rootObject" (SPR-8470)
* MediaType throws dedicated InvalidMediaTypeException instead of generic IllegalArgumentException (SPR-10226)
* DispatcherServlet allows for customizing its RequestAttributes exposure in subclasses (SPR-10342)
* AbstractCachingViewResolver does not use global lock for accessing existing View instances anymore (SPR-3145)
* MappingJackson(2)JsonView allows subclasses to access the ObjectMapper and to override content writing (SPR-7619)
* Tiles 3 TilesConfigurer preserves standard EL support for "completeAutoload" mode as well (SPR-10361)
* Log4jWebConfigurer supports resolving placeholders against ServletContext init-parameters as well (SPR-10284)
* consistent use of LinkedHashMaps and independent getAttributeNames Enumeration in Servlet/Portlet mocks (SPR-10224)
* several MockMvcBuilder refinements (SPR-10277, SPR-10279, SPR-10280)
* introduced support for context hierarchies in the TestContext framework (SPR-5613)
* introduced support for WebApplicationContext hierarchies in the TestContext framework (SPR-9863)
Changes in version 3.2.1 (2013-01-24)
--------------------------------------
* SpEL support for static finals on interfaces (SPR-10125)
* AnnotationAwareOrderComparator is able to sort Class objects as well (SPR-10152)
* added dedicated sort method to AnnotationAwareOrderComparator (SPR-9625)
* BridgeMethodResolver properly handles bridge methods in interfaces (SPR-9330)
* LocalVariableTableParameterNameDiscoverer works for bridge methods as well (SPR-9429)
* added constructor with Charset argument to EncodedResource (SPR-10096)
* ResourcePropertyResource accepts EncodedResource for properties files with a specific encoding (SPR-10096)
* SystemEnvironmentPropertySource properly works with an active JVM SecurityManager (SPR-9970)
* CachedIntrospectionResults.clearClassLoader(null) removes cached classes for the system class loader (SPR-9189)
* DisposableBeanAdapter detects "shutdown" as a destroy method as well (for EHCache CacheManager setup; SPR-9713)
* introduced NoUniqueBeanDefinitionException as a dedicated subclass of NoSuchBeanDefinitionException (SPR-10194)
* DefaultListableBeanFactory's getBean(Class) checks primary marker in case of multiple matches (SPR-7854)
* fixed QualifierAnnotationAutowireCandidateResolver's detection of custom qualifier annotations (SPR-10107)
* fixed AbstractAutoProxyCreator to accept null bean names again (SPR-10108)
* AbstractAdvisingBeanPostProcessor caches per bean target class, working for null bean names as well (SPR-10144)
* MessageSourceResourceBundle overrides JDK 1.6 containsKey method, avoiding NPE in getKeys (SPR-10136)
* SpringValidationAdapter properly detects invalid value for JSR-303 field-level bean constraints (SPR-9332)
* SpringBeanAutowiringInterceptor eagerly releases BeanFactory if post-construction fails (SPR-10013)
* added "exposeAccessContext" flag to JndiRmiClientInterceptor/ProxyFactoryBean (for WebLogic; SPR-9428)
* MBeanExporter does not log warnings for manually unregistered MBeans (SPR-9451)
* MBeanInfoAssembler impls expose actual method parameter names if possible (SPR-9985)
* AbstractCacheManager accepts no caches defined, allowing for EHCache default cache setup (SPR-7955)
* EhCacheManagerFactoryBean applies cacheManagerName ahead of creation (for EHCache 2.5 compatibility; SPR-9171)
* ThreadPoolExecutorFactoryBean exposes "createExecutor" method for custom ThreadPoolExecutor subclasses (SPR-9435)
* added "awaitTerminationSeconds" property to ThreadPoolTaskExecutor/ThreadPoolTaskScheduler (SPR-5387)
* aligned XML scheduled-task elements with @Scheduled in terms of kicking in after context refresh (SPR-9231)
* reintroduced "mode" and "proxy-target-class" attributes in spring-task-3.1/3.2.xsd (SPR-10177)
* spring-task-3.2.xsd allows for SpEL expressions in initial-delay attribute (SPR-10102)
* spring-jms-3.2.xsd allows for SpEL expressions in prefetch and receive-timeout attributes (SPR-9553)
* JmsTemplate uses configured receiveTimeout if shorter than remaining transaction timeout (SPR-10109)
* added MappingJackson2MessageConverter for JMS (SPR-10099)
* JDBC parameter binding uses JDBC 3.0 ParameterMetaData (if available) for type determination (SPR-10084)
* JpaTransactionManager etc finds default EntityManagerFactory in parent context as well (SPR-10160)
* MimeMessageHelper encodes attachment filename if not ASCII compliant (SPR-9258)
* FreeMarkerConfigurationFactory properly supports TemplateLoaders when recreating Configurations (SPR-9389)
* SpringContextResourceAdapter implements equals/hashCode according to the JCA 1.5 contract (SPR-9162)
* ContextLoader properly detects pre-refreshed WebApplicationContext (SPR-9996)
* added support for placeholders in @RequestMapping annotation value (SPR-9935)
* added support for specifying a message code as @ResponseStatus reason (SPR-6044)
* HttpEntityMethodProcessor supports HttpEntity/ResponseEntity subclasses as well (SPR-10207)
* Tiles 3 TilesConfigurer properly works in combination with "completeAutoload" (SPR-10195)
* Spring MVC Test framework supports HTTP OPTIONS method as well (SPR-10093)
* MockHttpServletRequest's getParameter(Values) returns null for null parameter name (SPR-10192)
* MockHttpServletResponse's getHeaderNames declares Collection instead of Set for Servlet 3.0 compatibility (SPR-9885)
Changes in version 3.2 GA (2012-12-13)
--------------------------------------
* upgraded Spring Framework build to AspectJ 1.7.1, JUnit 4.11, Groovy 1.8.8, JRuby 1.6.5, Joda-Time 2.1
* checked compatibility of Spring's Velocity support with Velocity 1.7 and Velocity Tools 2.0
* checked compatibility of Spring's JasperReports support with JasperReports 5.0
* added unit tests for Spring's Hibernate 4 support
* deprecated Apache iBATIS support in favor of native Spring support in Mybatis (the iBATIS successor)
* deprecated JSF 1.1 VariableResolver implementations in favor of Spring-provided JSF 1.2 ELResolvers
* deprecated BeanReferenceFactoryBean and CommonsLogFactoryBean
* DeprecatedBeanWarner detects deprecated FactoryBean classes and always logs user-specified bean type
* fixed CGLIB proxy class leaks through further equals/hashCode implementations in Spring AOP pointcuts (SPR-8008)
* ConfigurationClassPostProcessor consistently uses ClassLoader, not loading core JDK classes via ASM (SPR-10058)
* SpEL indexer uses direct access to specific List elements instead of iterating over the Collection (SPR-10035)
* DefaultMessageListenerContainer allows for concurrent subscription consumers on WebLogic/ActiveMQ (SPR-10037)
* DefaultMessageListenerContainer clears resources of paused tasks when shutting down after stop (SPR-10092)
* tx timeouts for JPA translate to "javax.persistence.query.timeout" only (for EclipseLink compatibility; SPR-10068)
* ResourceDatabasePopulator and JdbcTestUtils now support comments within SQL statements (SPR-10075, SPR-9982)
* AbstractCachingViewResolver uses a cache limit of 1024 by default, avoiding overflow for redirect URLs (SPR-10065)
* fixed HierarchicalUriComponents equals implementation (SPR-10088)
Changes in version 3.2 RC2 (2012-11-27)
---------------------------------------
* overhauled non-void JavaBean write method support (SPR-10029)
* CachedIntrospectionResults uses full WeakReference for any non-safe ClassLoader arrangement (SPR-10028)
* DefaultListableBeanFactory avoids wide/interleaved metadata locks to avoid deadlock potential (SPR-10020)
* DefaultListableBeanFactory avoids singletonObjects lock wherever possible for non-singleton performance (SPR-9819)
* DefaultListableBeanFactory doesn't cache for autowireBean calls anymore, avoiding ClassLoader leaks (SPR-8956)
* Java 5 Closeable's and Java 7 AutoCloseable's "close()" automatically detected as destroy methods (SPR-10034)
* @Bean destroy method inference not applying for DisposableBean implementers (avoiding double destruction)
* @Lazy and @DependsOn not marked as @Inherited anymore - only supported on actual bean types (SPR-9589, SPR-9476)
* AsyncAnnotationBean/MethodValidation/PersistenceExceptionTranslationPostProcessor cache eligible beans (SPR-7328)
* ConfigurableApplicationContext, LobCreator and Client/ServerHttpResponse implement Closeable for Java 7 (SPR-9962)
* spring-jms-3.2.xsd declares former nmtoken attributes as string, allowing for placeholders (SPR-9597)
* ResourceDatabasePopulator explicitly closes its LineNumberReader (SPR-9912)
* introduced TransactionAwareCacheManagerProxy for cache put synchronization with Spring transactions (SPR-9966)
* added "transactionAware" bean property to EhCacheCacheManager and JCacheCacheManager (SPR-9966)
* moved "cache.ehcache" and "cache.jcache" packages from spring-context to spring-context-support module
* deprecated "scheduling.backportconcurrent" package in favor of native JDK 6 "scheduling.concurrent" support
* deprecated Oracle OC4J support (OC4JJtaTransactionManager, OC4JLoadTimeWeaver) in favor of Oracle WebLogic
* deprecated ExpressionEvaluationUtils, turning off Spring's own JSP expression support in favor of JSP 2.0
* deprecated EJB 2.x implementation class hierarchy in "ejb.support" package
* deprecated DefaultAnnotationHandlerMapping and AnnotationMethodHandlerAdapter/ExceptionResolver (SPR-10005)
* Hibernate 4 support independently compiled against Hibernate 4.1, avoiding the use of reflection (SPR-10039)
* added integration with Tiles 3 (SPR-8825)
Changes in version 3.2 RC1 (2012-11-04)
---------------------------------------
* added "getApplicationName()" method to ApplicationContext interface
* introduced LiveBeansView MBean and LiveBeansViewServlet (SPR-9662)
* ResourceBundleMessageSource supports "defaultEncoding", "fallbackToSystemLocale", "cacheSeconds" (SPR-7392)
* BeanWrapper does not fall back to String constructor if ConversionService attempt failed before (SPR-9865)
* @Autowired, @Value, and qualifiers may be used as meta-annotations for custom injection annotations (SPR-9890)
* @DateTimeFormat may now be used as a meta-annotation for custom formatting annotations
* allow replaced-method 'arg-type' matches against element body as well as 'match' attribute (SPR-9812)
* fixed potential race condition in concurrent calling of autowired methods on a prototype bean (SPR-9806)
* cancel on a Future returned by a TaskScheduler works reliably (SPR-9821)
* LoadTimeWeaverAware beans are consistently being created early for JPA weaving to work reliably (SPR-9857)
* @ManagedResource supports placeholder resolution on all of its String properties (SPR-8244)
* Spring-backed DataSources consistently implement JDBC 4.0's Wrapper interface (SPR-9770, SPR-9856)
* optimized ResourceDatabasePopulator to work around JDK 1.7 substring performance regression (SPR-9781)
* JdbcTestUtils no longer interprets SQL comments as statements (SPR-9593)
* JPA persistence.xml files may use jar-file entries relative to the unit root (as per the JPA spec; SPR-9797)
* added "jtaDataSource" property to JPA LocalContainerEntityManagerFactoryBean (for default units; SPR-9883)
* Hibernate 4 LocalSessionFactoryBuilder sets thread context ClassLoader (for JBoss 7 compatibility; SPR-9846)
* HttpComponentsHttpInvokerRequestExecutor uses HttpComponents 4.2 to explicitly release connections (SPR-9833)
* UriComponentsBuilder is capable of handling opaque URIs as well (SPR-9798)
* CookieGenerator supports "cookieHttpOnly" flag for Servlet 3.0 (SPR-9794)
* added Spring MVC Test framework (SPR-9859, SPR-7951)
* introduced support for loading a WebApplicationContext in the TestContext framework (SPR-5243)
* introduced support for session & request scoped beans in the TestContext framework (SPR-4588)
* introduced support for setting locales in MockHttpServletRequest (SPR-9724)
* improved regular expression for parsing query params (SPR-9832)
* added mock implementations of Http[Input|Output]Message
* MediaType's include method now recognizes wildcards in media types with a suffix (SPR-9841)
* added support for wildcard media types in AbstractView and ContentNegotiationViewResolver (SPR-9807)
* added support for opaque URIs in UriComponentsBuilder (SPR-9798)
* added ObjectToStringHttpMessageConverter that delegates to a ConversionService (SPR-9738)
* fixed NullPointerException in AbstractMessageConverterMethodProcessor (SPR-9868)
* fixed issue in AnnotationMethodHandlerExceptionResolver (SPR-9209)
* added CallableProcessingInterceptor and DeferredResultProcessingInterceptor
* added Jackson2ObjectMapperBeanFactory (SPR-9739)
* the Jackson message converters now include "application/*+json" in supported media types (SPR-7905)
* DispatcherPortlet uses a forward for rendering a view as resource response (SPR-9876)
* prevent duplicate @Import processing and ImportBeanDefinitionRegistrar invocation (SPR-9925)
* throw AopInvocationException on advice returning null for primitive type (SPR-4675)
* resolve Collection element types during conversion (SPR-9257)
* allow SpEL reserved words in type package names (SPR-9862)
* provide alternative message code resolver styles (SPR-9707)
* support conversion from Enum Interface (SPR-9692)
* bypass conversion when possible (SPR-9566)
* extend conditional conversion support (SPR-9928)
* introduce @EnableMBeanExport (SPR-8943)
* add StringToUUIDConverter (SPR-9765)
* allow MapToMap conversion even without a default constructor (SPR-9284)
* allow SpEL to resolve getter method against object of type Class (SPR-9017)
* prevent memory leaks with @Configuration beans (SPR-9851)
* support inferred base package for @ComponentScan (SPR-9586)
* sort candidate @AspectJ methods deterministically (SPR-9729)
* improve SimpleStreamingClientHttpRequest performance (SPR-9530)
* added UnknownHttpStatusCodeException (SPR-9406)
* support for custom global Joda DateTimeFormatters (SPR-7121)
* support DateTimeFormat annotation without Joda (SPR-6508)
* use concurrent cache to improve performance of GenericTypeResolver (SPR-8701)
* cache and late resolve annotations on bean properties to improve performance (SPR-9166)
* allow PropertyResolver implementations to ignore unresolvable ${placeholders} (SPR-9569)
* FormHttpMessageConverter now adds Jackson JSON converters if available on the classpath (SPR-10055)
Changes in version 3.2 M2 (2012-09-11)
--------------------------------------
* inlined ASM 4.0 into spring-core, removed spring-asm subproject and jar (SPR-9669)
* inlined CGLIB 3.0 into spring-core, eliminating external dependency (SPR-9669)
* spring-test module now depends on junit:junit-dep (SPR-6966)
* SpEL now supports method invocations on integers (SPR-9612)
* SpEL now supports case-insensitive null literals in expressions (SPR-9613)
* SpEL now supports symbolic boolean operators for OR and AND (SPR-9614)
* SpEL now supports nested double quotes in expressions (SPR-9620)
* SpEL now throws an ISE if a MethodFilter is registered against custom resolvers (SPR-9621)
* now using BufferedInputStream in SimpleMetaDataReader to double performance (SPR-9528)
* fixed cache handling for JNLP connections (SPR-9547)
* now inferring return type of generic factory methods (SPR-9493)
* added Field context variant to TypeConverter interface in beans module
* @Value injection works in combination with formatting rules such as @DateTimeFormat (SPR-9637)
* @Autowired-driven ObjectFactory/Provider resolution works in non-singleton beans as well (SPR-9181)
* @Resource processing properly works with scoped beans and prototypes again (SPR-9627)
* introduced "repeatCount" property in Quartz SimpleTriggerFactoryBean (SPR-9521)
* introduced "jtaTransactionManager" property in Hibernate 4 LocalSessionFactoryBean/Builder (SPR-9480)
* now raising RestClientException instead of IllegalArgumentException for unknown status codes
* introduced JacksonObjectMapperFactoryBean for configuring a Jackson ObjectMapper in XML
* introduced ContentNegotiationManager/ContentNegotiationStrategy for resolving requested media types
* introduced support for content negotiation options in MVC namespace and MVC Java config
* added ContentNegotiationManagerFactoryBean (SPR-8420)
* introduced support for the HTTP PATCH method in Spring MVC and RestTemplate (SPR-7985)
* enabled smart suffix pattern matching in @RequestMapping methods (SPR-7632)
* introduced "defaultCharset" property in StringHttpMessageConverter (SPR-9487)
* introduced @ExceptionResolver annotation for detecting classes with @ExceptionHandler methods
* moved RSS/Atom message converter registration ahead of Jackson/JAXB2
* now handling BindException in DefaultHandlerExceptionResolver
* now setting "javax.servlet.error.exception" in DefaultHandlerExceptionResolver (SPR-9653)
* added ResponseEntityExceptionHandler alternative to DefaultHandlerExceptionResolver (SPR-9290)
* now using reflection to instantiate StandardServletAsyncWebRequest
* fixed issue with forward before async request processing
* DeferredResult type is now parameterized
* added async options to MVC namespace and Java config (SPR-9694)
* refactored Spring MVC async support (SPR-9433)
* media types in HTTP Accept headers can be parsed with single quotes (-> Android 2.x) (SPR-8917)
* DispatcherPortlet no longer forwards event exceptions to the render phase by default (SPR-9287)
* fixed Portlet request mapping priorities in cross-controller case (SPR-9303, SPR-9605)
* introduced exclude patterns for mapped interceptors in MVC namespace and MVC Java config
* introduced support for ApplicationContextInitializers in the TestContext framework (SPR-9011)
* introduced support for named dispatchers in MockServletContext (SPR-9587)
* introduced support for single, unqualified tx manager in the TestContext framework (SPR-9645)
* introduced support for TransactionManagementConfigurer in the TestContext framework (SPR-9604)
* introduced MockEnvironment in the spring-test module (SPR-9492)
* deprecated SimpleJdbcTestUtils in favor of JdbcTestUtils (SPR-9235)
* introduced "countRowsInTableWhere()" and "dropTables()" in JdbcTestUtils (SPR-9235)
* introduced JdbcTemplate in tx base classes in the TestContext framework (SPR-8990)
* introduced "countRowsInTableWhere()" and "dropTables()" in tx base test classes (SPR-9665)
* introduced support for @ComponentScan base package inference (SPR-9586)
* now building, testing and publishing against JDK7, maintaining compat with JDKs 5&6 (SPR-9715)
* added support for filter registrations in AbstractDispatcherServletInitializer (SPR-9696)
* improved no-match handling for @RequestMapping methods (SPR-9603)
* added support for matrix variables (SPR-5499, SPR-7818)
* added support generic types in @RequestBody arguments (SPR-9570)
* added support for generic types in the RestTemplate (SPR-7023)
* added fix to decode target parameters prior to saving a FlashMap (SPR-9657)
* now allowing an Errors argument after @RequestBody and @RequestPart (SPR-7114)
* introduced @ControllerAdvice annotation (SPR-9112)
* added exclude patterns for mapped interceptors (SPR-6570)
* now ignoring parse errors in HttpPutFormContentFilter (SPR-9769)
* optimized performance of HandlerMethod (SPR-9747, SPR-9748)
* optimized performance of AntPathStringMatcher (SPR-9749)
* added support for Filters/Servlet invocation in MockFilterChain (SPR-9745)
Changes in version 3.2 M1 (2012-05-28)
--------------------------------------
* upgrade to AspectJ 1.6.12, JUnit 4.10, TestNG 6.5.2
* Servlet 3.0-based async support
* HttpMessageConverter and View types compatible with Jackson 2.0
* better handling on failure to parse invalid 'Content-Type' or 'Accept' headers
* handle a controller method's return value based on the actual returned value (vs declared type)
* fix issue with combining identical controller and method level request mapping paths
* fix concurrency issue in AnnotationMethodHandlerExceptionResolver
* fix case-sensitivity issue with some containers on access to 'Content-Disposition' header
* fix issue with encoded params in UriComponentsBuilder
* add pretty print option to Jackson HttpMessageConverter and View types
* translate IOException from Jackson to HttpMessageNotReadableException
* fix issue with resolving Errors controller method argument
* implement InitializingBean in RequestMappingHandlerMapping to detect controller methods
* fix content negotiation issue when sorting selected media types by quality value
* prevent further writing to the response when @ResponseStatus contains a reason
* deprecate HttpStatus codes 419, 420, 421
* support access to all URI vars via @PathVariable Map<String, String>
* add "excludedExceptions" property to SimpleUrlHandlerMapping
* add CompositeRequestCondition for use with multiple custom request mapping conditions
* add ability to configure custom MessageCodesResolver through the MVC Java config
* add option in MappingJacksonJsonView for setting the Content-Length header
* decode path variables when url decoding is turned off in AbstractHandlerMapping
* add required flag to @RequestBody annotation
* Jaxb2Marshaller performs proper "supports" check for scanned packages (SPR-9152)
* add convenient WebAppInitializer base classes (SPR-9300)
* support executor qualification with @Async#value (SPR-6847)
* support initial delay attribute for scheduled tasks (SPR-7022)
* cache by-type lookups in DefaultListableBeanFactory (SPR-6870)
* merge rather than add URI vars to data binding values (SPR-9349)
* support not (!) operator for profile selection (SPR-8728)
* fix regression in ClassPathResource descriptions (SPR-9413)
* improve documentation of @Bean 'lite' mode (SPR-9401)
* improve documentation of annotated class support in the TestContext framework (SPR-9401)
* document support for JSR-250 lifecycle annotations in the TestContext framework (SPR-4868)
* improve dependency management for spring-test (SPR-8861)
* fix MultipartResolver Resin compatibility (SPR-9299)
* handle non-existent files in ServletContextResource (SPR-8461)
* apply cache settings consistently in EhCacheFactoryBean (SPR-9392)
* initial support for JCache (JSR-107) compliant cache providers (SPR-8774)
Changes in version 3.1.1 (2012-02-16)
-------------------------------------
* official support for Hibernate 4.0.0/4.0.1 as well as Hibernate 4.1
* JBossNativeJdbcExtractor is compatible with JBoss AS 7 as well
* restored JBossLoadTimeWeaver compatibility with JBoss AS 5.1
* Provider injection works with generically typed collections of beans as well
* @ActiveProfiles mechanism in test context framework works with @ImportResource as well
* context:property-placeholder's "file-encoding" attribute value is being applied correctly
* clarified Resource's "getFilename" method to return null if resource type does not have a filename
* Resource "contentLength()" implementations work with OSGi bundle resources and JBoss VFS resources
* PathMatchingResourcePatternResolver preserves caching for JNLP (Java Web Start) jar connections
* optimized converter lookup in GenericConversionService to avoid contention in JDK proxy check
* DataBinder correctly handles ParseException from Formatter for String->String case
* CacheNamespaceHandler actually parses cache:annotation-driven's "key-generator" attribute
* introduced CustomSQLExceptionTranslatorRegistry/Registrar for JDBC error code translation
* officially deprecated TopLinkJpaDialect in favor of EclipseLink and Spring's EclipseLinkJpaDialect
* fixed LocalContainerEntityManagerFactoryBean's "packagesToScan" to avoid additional provider scan
* LocalContainerEntityManagerFactoryBean's "persistenceUnitName" applies to "packagesToScan" as well
* DefaultPersistenceUnitManager uses containing jar as persistence unit root URL for default unit
* added protected "isPersistenceUnitOverrideAllowed()" method to DefaultPersistenceUnitManager
* Hibernate synchronization properly unbinds Session even in case of afterCompletion exception
* Hibernate exception translation covers NonUniqueObjectException to DuplicateKeyException case
* Hibernate 4 LocalSessionFactoryBean implements PersistenceExceptionTranslator interface as well
* Hibernate 4 LocalSessionFactoryBean does not insist on a "dataSource" reference being set
* added "entityInterceptor" property to Hibernate 4 LocalSessionFactoryBean
* added "getConfiguration" accessor to Hibernate 4 LocalSessionFactoryBean
* added "durability" and "description" properties to JobDetailFactoryBean
* fixed QuartzJobBean and MethodInvokingJobDetailFactoryBean for compatibility with Quartz 2.0/2.1
* JMS CachingConnectionFactory never caches consumers for temporary queues and topics
* JMS SimpleMessageListenerContainer silently falls back to lazy registration of consumers
* added "receive-timeout" attribute to jms:listener-container element in JMS namespace
* ServletServerHttpRequest/Response fall back on the Content-Type and encoding of the request
* preserve quotes in MediaType parameters
* added "normalize()" method to UriComponents
* remove empty path segments from input to UriComponentsBuilder
* added "fromRequestUri(request)" and "fromCurrentRequestUri()" methods to ServletUriComponentsBuilder
* Servlet/PortletContextResource's "isReadable()" implementation returns false for directories
* allow adding flash attributes in methods with a ModelAndView return value
* make flash attributes available in the model of Parameterizable/UrlFilenameViewController
* revised the FlashMapManager contract and implementation to address a flaw in its design
* removed check for HTTP POST when resolving multipart request controller method arguments
* fixed request mapping bug involving direct vs pattern path matches with HTTP methods
* updated @RequestMapping and reference docs wrt differences between @MVC 3.1 and @MVC 2.5-3.0
* improved @SessionAttributes handling to provide better support for clustered sessions
* added property to RedirectView to disable expanding URI variables in redirect URL
Changes in version 3.1 GA (2011-12-12)
--------------------------------------
* SmartLifecycle beans in Lifecycle dependency graphs are only being started when isAutoStartup=true
* ConversionService is able to work with "Collections.emptyList()" as target type (again)
* restored DataBinder's ability to bind to an auto-growing List with unknown element type
* added SmartValidator interface with general support for validation hints
* added custom @Validated annotation with support for JSR-303 validation groups
* JSR-303 SpringValidatorAdapter and MVC data binding provide support for validation groups
* restored SpringValidatorAdapter's ability to handle bean constraints with property paths
* added MethodValidationInterceptor/PostProcessor for Hibernate Validator 4.2 based method validation
* fixed QuartzJobBean to work with Quartz 2.0/2.1 as well
* @Transactional qualifiers match against transaction manager definitions in parent contexts as well
* optimized AnnotationTransactionAspect and AnnotationCacheAspect pointcuts to avoid runtime checks
* renamed @CacheEvict's "afterInvocation" attribute to "beforeInvocation" (for better readability)
* added "mappingResources" property to LocalContainerEntityManagerFactoryBean (pointing to orm.xml)
* Hibernate 4.0 variant of HibernateTransactionManager properly works with Open Session in View now
* JmsInvokerClientInterceptor/FactoryBean always uses createConnection/createSession when on JMS 1.1
* added out-of-the-box MappingJacksonMessageConverter impl for Spring's JMS MessageConverter facility
* DispatcherServlet's "dispatchOptionsRequest" only sets the default 'Allow' header if actually needed
* ResourceHttpRequestHandler sends content without content-type header if no media type found
* ResourceHttpRequestHandler and ContentNegotiatingViewResolver use consistent mime type resolution
* simplified support package layout in "web.method" and "web.servlet.mvc.method"
* added "useTrailingSlashMatch" property to RequestMappingHandlerMapping
* Portlet MVC annotation mapping allows for distributing action names across controllers
* added String constants to MediaType
Changes in version 3.1 RC2 (2011-11-28)
---------------------------------------
* fixed OSGi manifest for spring-web bundle to not require Apache HttpComponents anymore
* fixed GenericTypeResolver to consistently return null if not resolvable
* added proper "contentLength()" implementation to ByteArrayResource
* refined Resource "exists()" check for HTTP URLs to always return false for 404 status
* LocaleEditor and StringToLocaleConverter do not restrict variant part through validation
* LinkedCaseInsensitiveMap overrides putAll method as well (for IBM JDK 1.6 compatibility)
* optimized DefaultListableBeanFactory's PropertyDescriptor caching for concurrent access
* renamed ValueWrapperImpl to SimpleValueWrapper (for use in Cache implementations)
* exposed EHCache 1.7's "statisticsEnabled"/"sampledStatisticsEnabled" on EhCacheFactoryBean
* SpringValidatorAdapter accepts non-indexed set paths (for Hibernate Validator compatibility)
* TransactionSynchronizationManager eagerly cleans up void ResourceHolders on any access
* SimpleJdbcTestUtils executeSqlScript properly closes its LineNumberReader after use
* JDO PersistenceManager synchronization performs close attempt after completion (if necessary)
* JPA EntityManagerFactoryUtils silently ignores IllegalArgumentExceptions from setHint calls
* fixed HibernateTransactionManager for Hibernate 4.0 to refer to correct openSession() method
* added "namingStrategy" property to Hibernate 4 LocalSessionFactoryBean variant
* HibernateJpaDialect does NOT expose underlying Session for underlying SessionFactory anymore
* fixed MethodInvokingJobDetailFactoryBean's Quartz 2.0 support
* added Quartz 2.1 compatibility while preserving Quartz 2.0 support
* introduced JobDetail/CronTrigger/SimpleTriggerFactoryBean variants for Quartz 2.0/2.1 support
* added "forwarder" property to ConnectorServerFactoryBean, accepting an MBeanServerForwarder
* RmiClientInterceptor detects nested SocketException as connect failure as well
* fixed StandardServlet/PortletEnvironment to check for JNDI (for Google App Engine compatibility)
* Servlet/PortletContextResource's getFile prefers "file:" URL resolution over calling getRealPath
* Portlet session mutex uses global session attribute to be shared among all portlets in the session
* using original request URI in FlashMap matching logic to account for URL rewriting
* now supporting target request with multiple parameter values in FlashMap matching logic
* fixed issue in SimpleMappingExceptionResolver causing exception when setting "statusCodes" property
* added ignoreDefaultModelOnRedirect attribute to <mvc:annotation-driven/>
* added methods to UriComponentsBuilder for replacing the path or the query
* support UriComponentsBuilder as @Controller method argument
* added ServletUriComponentsBuilder to build a UriComponents instance starting with a ServletRequest
* fixed issue with cache ignoring prototype-scoped controllers in RequestMappingHandlerAdapter
* fixed issue with setting Content-Length header depending on the charset of the response
* fixed @RequestMapping header matching to correctly process negated header conditions
* added getObjectMapper() accessor to MappingJacksonHttpMessageConverter
* AbstractCachingViewResolver caches unresolved view names by default ("cacheUnresolved"=true)
* form input tag now allows type values other than "text" such as HTML5-specific types
* form hidden tag now supports "disabled" attribute
* fixed "formMultiSelect"/"formCheckboxes" FreeMarker macros to compare against actual field value
* MockHttpServletRequest/Response now keep contentType field and Content-Type header in sync
* updated Spring MVC configuration section to include MVC Java config and the MVC namespace
Changes in version 3.1 RC1 (2011-10-11)
---------------------------------------
* upgraded to JUnit 4.9
* updated Quartz support package for Quartz 2.0 compatibility
* support for load-time weaving on WebSphere 7 and 8
* updated JBossLoadTimeWeaver to automatically detect and support JBoss AS 7 as well
* added support for Hibernate 4.0 (HibernateJpaDialect as well as natively in orm.hibernate4)
* added 'destroy method inference' (SPR-8751)
* prepared Spring's DataSource and RowSet adapters for forward compatibility with JDBC 4.1
* introduced ForkJoinPoolFactoryBean for Java 7 (alternative: add new jsr166.jar to Java 6)
* introduced extended WritableResource interface
* ConversionService prevents Converter from trying to convert to a subtype of its actual target type
* CollectionCollection/MapToMapConverter preserve original Collection/Map if no converted elements
* DefaultListableBeanFactory is only deserializable through a SerializedBeanFactoryReference
* DefaultListableBeanFactory's getBean(name, type) attempts type conversion if necessary
* DefaultListableBeanFactory allows for init methods to register further bean definitions (again)
* XmlBeanDefinitionReader accepts description subelement within map entry as well (as per the XSD)
* ConfigurationClassPostProcessor supports use of same processor instance with several factories
* SpringBeanAutowiringSupport is able to process @Value annotations on any given target instance
* introduced @EnableAspectJAutoProxy
* overridden @PersistenceContext annotations on subclass methods are being processed correctly
* DataBinder uses a default limit of 256 for array/collection auto-growing
* added "autoGrowNestedPaths" property to ConfigurableWebBindingInitializer
* added "getMultipartContentType(String)" method to MultipartRequest interface
* added headers support to MultipartFile abstraction (actually supported on Servlet 3.0)
* revised Servlet 3.0 based StandardServletMultipartResolver for correct param/file distinction
* MultipartFilter uses a Servlet 3.0 based StandardServletMultipartResolver by default
* added RequestPartServletServerHttpRequest and corresponding @RequestPart support in Spring MVC
* added "connectTimeout" and "readTimeout" properties to Simple/CommonsClientHttpRequestFactory
* added flash attribute support through FlashMap and FlashMapManager abstractions
* added RedirectAttributes abstraction as supported method argument type of @RequestMapping methods
* added "ignoreDefaultModelOnRedirect" flag to RequestMappingHandlerAdapter
* fixed @ExceptionHandler exception type matching (ExceptionDepthComparator)
* ResourceHttpRequestHandler detects invalid directory traversal in given path
* HtmlUtils properly escapes single quotes as well
* Spring JSP tags do not use their own expression support on Servlet 3.0 containers by default
* added support for web.xml context-param "springJspExpressionSupport" (explicit "true"/"false")
* ContextLoader and FrameworkServlet support "contextId" parameter for custom serialization id
* added "acceptProxyClasses" flag to RemoteInvocationSerializingExporter
* refined WebLogic RMI descriptor to only mark 'getTargetInterfaceName' method as idempotent
* revised JMS CachedConnectionFactory to avoid unnecessary rollback calls on Session return
* fixed JMS CachedConnectionFactory to fully synchronize its Session list
* JpaTransactionManager etc can find EntityManagerFactory by "persistenceUnitName" property now
* HibernateJpaDialect exposes underlying Session for underlying SessionFactory
* deprecated JpaTemplate/JpaInterceptor/JpaDaoSupport and JdoTemplate/JdoInterceptor/JdoDaoSupport
* updated H2 error codes in sql-error-codes.xml
* fixed NamedParameterJdbcTemplate to use correct maximum type for queryForInt/Long
* jdbc:script's "separator" and "execution" attributes work nested with embedded-database as well
* added "encoding" attribute to jdbc:script element
* JavaMailSenderImpl detects and respects "mail.transport.protocol" property in existing Session
* added ConcurrentMapCacheManager, dynamically building ConcurrentMapCache instances at runtime
* added "disabled" property to EhCacheFactoryBean
* introduced generic invokeMethod() in ReflectionTestUtils
* introduced DelegatingSmartContextLoader as new default ContextLoader for TestContext framework
* deprecated @ExpectedException
* AnnotationConfigContextLoader now detects default configuration classes within test classes
* TestContext now uses MergedContextConfiguration for the ContextCache key
* extended Servlet API mocks for Servlet 3.0 forward compatibility as far as possible
* made MockHttpServletResponse compatible with Servlet 3.0 getHeader(s) method returning Strings
* added getHeaderValue(s) method to MockHttpServletResponse for raw value access
Changes in version 3.1 M2 (2011-06-08)
--------------------------------------
* revised TypeDescriptor signature and implementation for clearer handling of nested generics
* full support for arbitrary nesting of collections in fields
* proper type detection in nested collections within arrays
* collection/array conversion returns original collection if possible (instead of first element)
* AnnotatedBeanDefinitionReader now inherits Environment of supplied BeanDefinitionRegistry
* eliminated @Feature support in favor of @Enable* and framework-provided @Configuration classes
* introduced @EnableTransactionManagement, @EnableScheduling, etc
* add Java config alternative to MVC namespace via @EnableWebMvc annotation
* introduce HandlerMethod abstraction selecting and invoking @RequestMapping methods
* add HandlerMethod-based implementations of HandlerMapping, HandlerAdapter, HandlerExceptionResolver
* merge @PathVariables in the model before rendering except for JSON/XML serialization/marshalling.
* use @PathVariables in addition to request parameters in data binding
* support URI variable placeholders in "redirect:" prefixed view names
* add flag to extract value from single-key model in MappingJacksonJsonView
* support @Valid on @RequestBody method arguments
* allow bean references in mvc:interceptor namespace elements
* consolidate initialization and use of MappedInterceptors in AbstractHandlerMapping
* added Servlet 3.0 based WebApplicationInitializer mechanism for programmatic bootstrapping
* added Servlet 3.0 based StandardServletMultipartResolver
* added "packagesToScan" feature to LocalContainerEntityManagerFactoryBean (avoiding persistence.xml)
* fixed JPA 2.0 timeout hints to correctly specify milliseconds
* added support for shutdown scripts to DataSourceInitializer (see "databaseCleaner" property)
* added "separator" and "execution" attributes to jdbc:script element
* revised cache abstraction to focus on minimal atomic access operations
* updated Quartz package to support Quartz 1.8 as well (note: not fully supporting Quartz 2.0 yet)
* RemoteExporter uses an opaque proxy for 'serviceInterface' (no AOP interfaces exposed)
* introduced AnnotationConfigContextLoader to provide TestContext support for @Configuration classes
* introduced @ActiveProfiles for declarative configuration of bean definition profiles in tests
* TestContext generates context cache key based on all applicable configuration metadata
* deprecated AbstractJUnit38SpringContextTests and AbstractTransactionalJUnit38SpringContextTests
Changes in version 3.1 M1 (2011-02-11)
--------------------------------------
* upgraded to JUnit 4.8.1 and TestNG 5.12.1
* fixed aspects bundle to declare dependencies for @Async aspect as well
* introduced Environment abstraction with flexible placeholder resolution
* introduced support for environment profiles in XML bean definition files
* introduced @Profile annotation for configuration classes and individual component classes
* introduced PropertySourcesPlaceholderConfigurer as alternative to PropertyPlaceholderConfigurer
* introduced "c:" namespace for constructor argument shortcuts (analogous to the "p:" namespace)
* introduced @FeatureConfiguration classes with @Feature methods that return FeatureSpecifications
* added TxAnnotationDriven, MvcAnnotationDriven, etc. as out-of-the-box FeatureSpecifications
* introduced caching abstraction and cache annotation support
* moved EhCache FactoryBeans from context-support to context module
* EhCacheManagerFactoryBean properly closes "ehcache.xml" input stream, if any
* exceptions thrown by @Scheduled methods will be propagated to a registered ErrorHandler
* ProxyCreationContext uses "ThreadLocal.remove()" over "ThreadLocal.set(null)" as well
* BeanDefinitionVisitor now actually visits factory method names
* fixed potential InjectionMetadata NPE when using SpringBeanAutowiringInterceptor
* fixed AbstractBindingResult to avoid NPE in "hashCode()" if target is null
* Servlet/PortletRequestDataBinder perform unwrapping for MultipartRequest as well
* ResourceHttpRequestHandler does not set Content-Length header for 304 response
* LocaleChangeInterceptor validates locale values in order to prevent XSS vulnerability