First they ignore you
then they ridicule you
then they fight you
then you win
    -- Mahatma Gandhi
Chinese => English     英文 => 中文             
随笔-219  评论-1047  文章-0  trackbacks-0
Spring 2.0.4发布了,如果您正在使用2.0.3的话,建议升级到此版本,因为官方在2.0.2至2.0.3的更新有点草率,所以存在不少Bug。



Changes in version 2.0.4 (2007-04-10)

Package org.springframework.aop
* AbstractAutoProxyCreator caches advice information per bean, for efficient prototype creation with auto-proxying
* fixed AspectJAfterReturningAdvice to avoid NPE within returning type check in case of the return value being null
* fixed AspectJAwareAdvisorAutoProxyCreator's "toString()" implementation to be compatible with JDK 1.3/1.4
* AnnotationAwareAspectJAutoProxyCreator caches Advisors for singleton @Aspect aspects, increasing performance
* introduced Simple(MetadataAware)AspectInstanceFactory, creating an independent aspect instance on every invocation
* revised AspectJProxyFactory to avoid "spring-beans" dependencies, using SimpleMetadataAwareAspectInstanceFactory now
* AbstractAspectJAdvice lazily calculates argument bindings, avoiding a "spring-beans" dependency (InitializingBean)
* "this" pointcut in AspectJ pointcut expressions is matched against the proxy object rather than the target object

Package org.springframework.beans
* PropertyEditorRegistrySupport/BeanWrapperImpl lazily registers default editors when needed (to avoid init overhead)
* PropertyEditorRegistrySupport supports registration of shared editors, to allow for specific synchronization
* BeanWrapperImpl mimimizes bean name parsing overhead and caches parsed property path tokens
* PatternEditor allows for customization through specifying "java.util.regex.Pattern" flags
* fixed PropertyPlaceholderConfigurer/BeanDefinitionVisitor to correctly handle TypedStringValue objects with null value
* AbstractFactoryBean offers a protected "getBeanFactory()" method for accessing its BeanFactory reference
* BeanReferenceFactoryBean returns null from "getObjectType()" if the BeanFactory has not been injected yet
* AbstractAutowireCapableBeanFactory uses "filteredPropertyDescriptorsCache" for the PropertyDescriptor array per class
* DefaultListableBeanFactory is able to invoke public init and destroy methods on package-protected classes
* DefaultListableBeanFactory caches pre-converted property values as far as possible
* DefaultListableBeanFactory allows placeholders in class names even for non-lazy-init beans
* ConstructorResolver caches the resolved constructor or factory method, for faster re-creation of prototype instances
* ConstructorResolver caches converted argument values, to avoid conversion overhead for re-created prototype instances
* DefaultNamespaceHandlerResolver logs linkage error at warn level, in case of a handler class found but not loadable

Package org.springframework.context
* added "addApplicationListener" method to ConfigurableApplicationContext interface, for statically registered listeners

Package org.springframework.core
* added "getNames", "getNamesForProperty", "getNamesForSuffix" and "getValuesForSuffix" methods to Constants
* fixed GenericCollectionTypeResolver to correctly navigate Map-List-List structures with a nesting level of 3 or more
* BridgeMethodResolver performs multi-step resolution of type variables, for complex multi-type inheritance scenarios

Package org.springframework.dao
* PersistenceExceptionTranslationInterceptor supports PersistenceExceptionTranslator autodetection in standalone mode

Package org.springframework.jca
* added "setConnectionSpec" method and corresponding constructor to CciTemplate, for specifying a spec at template level
* added "getDerivedTemplate(ConnectionSpec) method to CciTemplate, for obtaining a template with just different con spec
* added "getCciTemplate(ConnectionSpec) method to CciDaoSupport, for obtaining a template with just different con spec

Package org.springframework.jdbc
* SqlOperation and its subclasses do not pre-parse for named parameters anymore, accepting ":" in plain SQL strings

Package org.springframework.jms
* added "isSessionTransactional" method to ConnectionFactoryUtils
* introduced SessionProxy interface for target Session access, exposed by TransactionAwareConnectionFactoryProxy
* DefaultMessageListenerContainer switches "sessionTransacted" to "true" in case of a non-JTA ResourceTransactionManager
* DefaultMessageListenerContainer rolls back an external transaction in case of a message rejected while stopping
* DefaultMessageListenerContainer does not eagerly commit/rollback a in case of a synchronized transacted Session
* DefaultMessageListenerContainer obtains a shared Connection lazily in case of autoStartup="true"
* DefaultMessageListenerContainer recovers a shared Connection lazily if it is not currently running (has been stopped)
* DefaultMessageListenerContainer allows for specifying the listener object lazily, and for replacing it at runtime
* fixed JmsInvokerClientInterceptor/ProxyFactoryBean's "queue" property to declare type Queue now

JuergenPackage org.springframework.jndi
* added "proxyInterfaces" property to JndiObjectFactoryBean, for specifying multiple interfaces
* JndiObjectFactoryBean autodetects proxy interfaces from a specified "expectedType", if necessary
* JndiObjectTargetSource returns the specified "expectedType" as target class if no JNDI object has been obtained yet

Package org.springframework.mail
* added "setPriority" method to MimeMessageHelper, for populating the "X-Priority" mail header

Package org.springframework.mock
* MockHttpServletResponse automatically marks the response as committed once the buffer size has been exceeded
* MockHttpServletResponse marks the response as committed in case of a "OutputStream.flush()" / "Writer.flush()" call

Package org.springframework.orm
* SharedEntityManagerCreator's proxies deliver a "toString()" result without touching a target EntityManager
* added protected "getPersistenceUnitInfo" method to DefaultPersistenceUnitManager, to allow for better subclassing
* DefaultPersistenceUnitManager clears the default PersistenceUnitInfo once it has been obtained
* added "defaultPersistenceUnitName" property to PersistenceAnnotationBeanPostProcessor
* PersistenceAnnotationBeanPostProcessor only sets fields/methods accessible when actually necessary

Package org.springframework.remoting
* RemoteInvocationUtils detects cycles in exception causes when updating the stack trace (avoiding an infinite loop)

Package org.springframework.samples
* added default Hibernate EntityManager and Apache OpenJPA configurations to PetClinic's WAR file and integration tests
* PetClinic's JPA variant explicitly specifies "META-INF/orm.xml" as mapping file (for Hibernate EntityManager 3.3.0)
* PetPortal's build script properly includes the Log4J jar in the WAR file

Package org.springframework.scheduling
* added "targetBeanName" property to MethodInvokingJobDetailFactoryBean for Quartz, allowing for non-singleton targets
* ThreadPoolTaskExecutor/ScheduledExecutorFactoryBean includes the corresponding bean name in startup/shutdown logging

Package org.springframework.scripting
* LangNamespaceHandler references ScriptFactory classes by name, to avoid NoClassDefFoundErrors in all scenarios
* added "scope" attribute to all script tags in the "lang" namespace, allowing for non-singleton script objects
* updated JRuby support for JRuby 0.9.8 (requiring this version now due to incompatible JRuby API changes)

Package org.springframework.test
* added "getActualException()" method to AssertThrows, for introspecting the actual exception instance after throwing

Package org.springframework.transaction
* factored out TransactionOperations interface from TransactionTemplate, defining the central "execute" operation
* introduced ResourceTransactionManager (i.e. non-JTA) interface, indicating the resource factory that it operates on
* "tx:advice" expects that the XML parser might not expose the defaults defined in "spring-tx-2.0.xsd" (e.g. on Resin)

Package org.springframework.util
* ObjectUtils's "nullSafeToString"/"getDisplayValue" returns an empty String if "Object.toString()" returned null
* ClassUtils's "classPackageAsResourcePath" parses the class name in order to detect the package name in all cases
* fixed CustomizableThreadCreator to properly apply its "daemon" flag (inherited by SimpleAsyncTaskExecutor)

Package org.springframework.web
* added "getContextPath", "getRemoteUser", "getUserPrincipal", "isUserInRole", "isSecure" to WebRequest abstraction
* changed visibility of "getRequest" accessor on ServletWebRequest and PortletWebRequest to public
* CharacterEncodingFilter sets the encoding as default response encoding on Servlet 2.4+ (if "forceEncoding"="true")
* Servlet/PortletContextAware and Servlet/PortletConfigAware are simply skipped if they cannot be satisfied
* added public "refresh()" operation with protected "onRefresh()" template method to DispatcherServlet/Portlet
* reworked DispatcherServlet/Portlet to automatically refresh internal state if its ApplicationContext refreshes
* DispatcherPortlet logs startup logging at debug level instead of info level, analogous to DispatcherServlet
* factored out protected "getHandlerExecutionChain" template method in Servlet/Portlet AbstractHandlerMapping
* added "getRootHandler()" method to AbstractUrlHandlerMapping, called on each access to the root handler
* added overloaded "suppressValidation(request, command, errors)" variant to BaseCommandController
* deprecated "suppressValidation(request)" in BaseCommandController, in favor of the "(request, command)" variant
* revised AbstractXsltView for transformer customization options ("buildTransformer" and "getTemplates" methods)
* added "getParameters(model, request") variant to AbstractXsltView, deprecating the old "getParameters()" variant
* "spring.tld" and "spring-form.tld" declare the Spring major version number (2.0) as taglib version number
* fixed JSP BindTag to correctly save and re-expose a page-scoped "status" attribute (not just a request-scoped one)
* JSP FormTag escapes the "action" attribute as well if HTML escaping has been requested
* JSP InputTag supports the common "autocomplete" HTML extension attribute (as supported by IE and Firefox)
* JSP InputTag and TextareaTag support the HTML "readonly" element correctly now, only rendering it if specified
* JSP CheckboxTag applies custom editors for the element type when comparing collection elements
* added missing "readonly" attribute to JSP TextareaTag
* checkbox and radiobutton macros in "spring.vm" for Velocity do not render an id anymore (because it isn't unique)
* checkbox macro in "spring.vm" for Velocity and "spring.ftl" for FreeMarker renders the default field marker
* added theme macros to "spring.vm" for Velocity and "spring.ftl" for FreeMarker, providing access to theme messages

posted on 2007-04-18 01:43 山风小子 阅读(2371) 评论(5)  编辑  收藏 所属分类: SpringOthers