Spring 0.9 版本,有记录的第一个版本
Changes in version 0.9 (25.6.2003) ---------------------------------- * first public release since the version that came with the book "Expert One-on-One J2EE Design and Development" * following various unofficial 0.8 CVS snapshots * general tightening and polishing * log via Commons Logging * Log4J configuration support * revised bean definition XML format with DTD * support for lists, maps, and props in XML bean definitions * support for hierarchical bean factories * support for custom property editors * various new out-of-the-box editors for dates, numbers, etc * new FactoryBean interface instead of custom bean definitions * FactoryBean-based resource definitions for JDBC DataSource etc * revised simple DataSource implementations * new JDBC error code exception translater * new DataFieldMaxValueIncrementer support for JDBC * new generic transaction management * new JDO support: resource definition, transaction strategy, template, interceptor * new Hibernate support: resource definition, transaction strategy, template, interceptor * new support for remoting via Hessian and Burlap * new AOP framework aligned with AOP Alliance * revised EJB access classes based on AOP * resource access from application contexts * support for MessageSourceResolvable * revised validation framework * support for global validation errors * revised web framework * refactored form controller hierarchy * new handler interception mechanism * locale and theme resolution * support for HTML escaping * revised JSP tag implementations * new sample application "Petclinic" * new sample application "PagedList" * application skeletons as configuration showcases * MutableSortDefinition accepts now NO_CHANGE for setProperty and does nothing in this case * (many new convenience classes and methods) * (too many minor improvements to list) * (lots of minor bugfixes)
https://docs.spring.io/spring/docs/1.2.9/changelog.txt
Changes in version 0.9 (25.6.2003) ---------------------------------- * first public release since the version that came with the book "Expert One-on-One J2EE Design and Development" * following various unofficial 0.8 CVS snapshots * general tightening and polishing * log via Commons Logging * Log4J configuration support * revised bean definition XML format with DTD * support for lists, maps, and props in XML bean definitions * support for hierarchical bean factories * support for custom property editors * various new out-of-the-box editors for dates, numbers, etc * new FactoryBean interface instead of custom bean definitions * FactoryBean-based resource definitions for JDBC DataSource etc * revised simple DataSource implementations * new JDBC error code exception translater * new DataFieldMaxValueIncrementer support for JDBC * new generic transaction management * new JDO support: resource definition, transaction strategy, template, interceptor * new Hibernate support: resource definition, transaction strategy, template, interceptor * new support for remoting via Hessian and Burlap * new AOP framework aligned with AOP Alliance * revised EJB access classes based on AOP * resource access from application contexts * support for MessageSourceResolvable * revised validation framework * support for global validation errors * revised web framework * refactored form controller hierarchy * new handler interception mechanism * locale and theme resolution * support for HTML escaping * revised JSP tag implementations * new sample application "Petclinic" * new sample application "PagedList" * application skeletons as configuration showcases * MutableSortDefinition accepts now NO_CHANGE for setProperty and does nothing in this case * (many new convenience classes and methods) * (too many minor improvements to list) * (lots of minor bugfixes)
spring 1.1.1 第一个spring 文档版本
https://docs.spring.io/spring/docs/1.1.1/reference/index.html
In early 2004, Martin Fowler asked the readers of his site: when talking about Inversion of Control: "the question, is what aspect of control are they inverting?".
Inversion Of Control 反转控制设计模式来源
https://martinfowler.com/articles/injection.html
Spring AOP
Aspect-Oriented Programming (AOP) complements OOP by providing another way of thinking about program structure. While OO decomposes applications into a hierarchy of objects, AOP decomposes programs into aspects or concerns.
Spring implements the AOP Alliance interception interfaces
https://sourceforge.net/projects/aopalliance/
Spring defaults to using J2SE dynamic proxies for AOP proxies. This enables any interface or set of interfaces to be proxied.
Spring can also use CGLIB proxies. This is necessary to proxy classes, rather than interfaces. CGLIB is used by default if a business object doesn't implement an interface. As it's good practice to program to interfaces rather than classes, business objects normally will implement one or more business interfaces.
The basic way to create an AOP proxy in Spring is to use the org.springframework.aop.framework.ProxyFactoryBean.
Spring also allows us to use "autoproxy" bean definitions, which can automatically proxy selected bean definitions. This is built on Spring "bean post processor" infrastructure, which enables modification of any bean definition as the container loads.
Spring AspectJ
for example, if we need to add additional fields to a class, or advise fine-grained objects that aren't created by the Spring IoC container.
Spring Transaction Management
Spring provides a consistent abstraction for transaction management. This abstraction is one of the most important of Spring's abstractions, and delivers the following benefits:
Provides a consistent programming model across different transaction APIs such as JTA, JDBC, Hibernate, iBATIS Database Layer and JDO.
Scheduling jobs using Quartz or Timer
Spring features integration classes for scheduling support. Currently, Spring supports the Timer, built in in the JDK since 1.3 and the Quartz SchedulerSpring 1.1.1 版本小结:
Spring1.1.1 版本是spring 第一个带有文档的发行版本. 该版本IoC模块核心以及Aop核心都已经搭建完成.
IoC模块主要通过xml来配置bean的注入.
Spring 版本1.2.6 新增ResouceLoader 模块
UrlResource
This wraps a java.net.URL, and may be used to access any object that is normally accessible via a URL, such as files, an http target, an ftp target, etc.
ClassPathResource
This class represents a resource which should be obtained from the classpath. This uses either the thread context class loader, a given class loader, or a given class for loading resources.
FileSystemResource
This is a Resource implementation for java.io.File handles.
ByteArrayResource
This is a Resource implementation for a given byte array. It creates ByteArrayInputStreams for the given byte array.
spring 1.2.x 版本小结:
Spring1.2.x 版本在spring1.1.x 版本上进行优化,没有太大变化.
Spring 2.0 版本.
http://docs.spring.io/spring/docs/2.0.0/reference/new-in-2.html
Spring 2.0 版本时间点:Spring 2.0 was announced in December 2005 at theSpring Experience conference in Florida.
Bean Scope
Spring had IoC container level support for exactly two distinct bean scopes (singleton and prototype). Spring 2.0 improves on this by not only providing a number of additional scopes depending on the environment in which Spring is being deployed (for example, request and session scoped beans in a web environment), but also by providing 'hooks' (for want of a better word) so that Spring users can create their own scopes.
Spring AOP @AspectJ
Spring 2.0 has a much improved AOP offering. The Spring AOP framework itself is markedly easier to configure in XML, and significantly less verbose as a result; and Spring 2.0 integrates with the AspectJ pointcut language and @AspectJ aspect declaration style.
Spring 2.0 also supports aspects defined using the @AspectJ annotations.
Dynamic language support
Spring 2.0 now has support for beans written in languages other than Java, with the currently supported dynamic languages being JRuby, Groovy and BeanShell.