SPRING FRAMEWORK CHANGELOG ========================== http://www.springsource.org Changes in version 3.0.0.M2 (2009-02-20) ---------------------------------------- * refined OSGi version constraints for "javax.annotation" and "junit.framework" * revised expression parser API design * added SimpleThreadScope implementation * "systemProperties" bean is not considered a default match for type Properties anymore * registered plain singletons will be fully matched according to their qualifiers * @Qualifier value matching takes chained aliases of target beans into account as well * SimpleAliasRegistry's "getAliases" method returns transitive aliases now * pre-converted property values are preserved more eagerly for re-created beans * ASM-based AnnotationMetadata fully resolves class arguments and enums into Java types * ProceedingJoinPoint resolves parameter names using ASM-based parameter name discovery * MethodInvocations and ProceedingJoinPoints always expose original method (not bridge) * bridge method resolution works with Hibernate-generated CGLIB proxies as well * generic collection type resolution respects upper bound (e.g. ? extends Number) as well * TypeUtils detects variations of ParameterizedType/GenericArrayType assignability as well * ReflectionUtils findMethod detects methods on "java.lang.Object" as well * UrlResource eagerly closes HTTP connections in case of "getInputStream()" failure * PathMatchingResourcePatternResolver avoids NPE when initialized with null ClassLoader * all "taskExecutor" bean properties now accept any "java.util.concurrent.Executor" * added "Future submit(Runnable)" and "Future submit(Callable)" to AsyncTaskExecutor * SimpleAsyncTaskExecutor supports a custom "java.util.concurrent.ThreadFactory" * SchedulingTaskExecutor interface extends AsyncTaskExecutor now * added ThreadPoolExecutorFactoryBean (exposing the native ExecutorService interface) * added ExecutorServiceAdapter class as a standard wrapper for a Spring TaskExecutor * reduced backport-concurrent support to TaskExecutor adapters * added @Async annotation and AsyncAnnotationAdvisor (namespace support coming in M3) * EJB 3.1's @Asynchronous annotation gets detected and supported by default as well * ApplicationListener beans get obtained on demand, supporting non-singletons as well * ApplicationListeners will be called in the order according to the Ordered contract * generified ApplicationListener interface, narrowing the event type to be received * introduced SmartApplicationListener interface for supported event/source types * generified Transaction/Hibernate/Jdo/JpaCallback with generic "doInXxx" return type * HibernateOperations uses generic parameter/return types where possible * JdoOperations uses generic parameter/return types where possible (following JDO 2.1) * removed "flush" operation from JdoDialect (fully relying on JDO 2.0+ compliance now) * added JDO 2.1 compliant StandardPersistenceManagerProxy/SpringPersistenceManagerProxy * Spring-created EntityManagers support JPA 2.0 draft API ("unwrap", "getQueryBuilder") * Spring initiates JPA 2.0 query timeout with remaining Spring transaction timeout * added support for WebSphere's ResourceAdapter-managed messaging transactions * made SpringBeanAutowiringInterceptor callback signature compatible with WebSphere * WebSphereUowTransactionManager preserves original exception in case of rollback * added "flush()" method to TransactionStatus and TransactionSynchronization interfaces * test context manager automatically flushes transactions before rolling back * DefaultLobHandler uses explicit Blob/Clob access for reading when "wrapAsLob"=true * fixed JmsException/JmsUtils to fully avoid NPEs in case of cause messages being null * fixed MessageListenerAdapter's "getSubscriptionName()" to work without delegate as well * fixed HTTP invoker to support resolution of multi-level primitive array classes again * introduced OXM support package (originating from Spring Web Services) * introduced OXM-based MarshallingMessageConverter for JMS * introduced OXM-based MarshallingView for Spring MVC * refined @PathVariable handling in MVC handler methods * updated Spring Portlet MVC infrastructure and mocks for Portlet API 2.0 * added resource and event methods to Portlet HandlerAdapter/HandlerInterceptor * added resolveException method for resource requests to HandlerExceptionResolver * introduced Resource/EventAwareController subinterfaces of Portlet Controller * introduced @Action/@Render/@Resource/@EventMapping annotations for Portlet MVC * added @RequestHeader support for Portlet MVC * introduced @CookieValue annotation for Servlet and Portlet MVC handler methods * @RequestMapping type-level param constraints taken into account consistently * optional boolean parameters in MVC handler methods resolve to "false" if not present * "url" macro in "spring.ftl" performs standard Servlet URL encoding automatically Changes in version 3.0.0.M1 (2008-12-05) ---------------------------------------- * revised project layout and build system (module-based sources, bundle repository) * updated entire codebase for Java 5 code style (generics, varargs, StringBuilder) * updated to JUnit 4.5 and JRuby 1.1 * removed WebLogic 8.1 and WebSphere 5.1 support * removed native TopLink API support (superseded by JPA) * removed Commons Attributes support (superseded by Java 5 annotations) * removed Jakarta JSTL support for JSP 1.2 (superseded by JSP 2.0) * removed outdated Struts 1.x Action delegation support * removed ContextLoaderServlet and Log4jConfigServlet * deprecated form controller hierarchy in favor of @MVC form object handling * deprecated JUnit 3.8 test class hierarchy in favor of test context framework * revised TaskExecutor interface to extend "java.util.concurrent.Executor" now * introduced Spring EL parser in org.springframework.expression package * introduced #{...} expression support in bean definitions * introduced @Value annotation for embedded expression support * introduced @PathVariable annotation for MVC handler methods * introduced ShallowEtagHeaderFilter * introduced AbstractAtomFeedView and AbstractRssFeedView * introduced default value support for @RequestParam * introduced @RequestHeader annotation for MVC handler methods * introduced "spring:url" and "spring:param" JSP tags