sprin解决的问题:Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。 . Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置
spring一些组件介绍 :Spring的设计核心是 org.springframework.beans 包, 为与JavaBeans一起工作而设计。 这个包一般不直接被用户使用, 但作为基础为更多的其他功能服务. 下一个较高层面的抽象是"Bean Factory"。
Spring bean factory 是一个普通的Factory,它使对象能够按名称获取,并且能管理对象之间的关系。
Bean factories 支持两种对象模式: .
Singleton:在此模式中,有一个具有特定名称的共享对象实例,它在查找时被获取。这是默认的,而且是最为经常使用的。它对于无状态对象是一种理想的模式。 .
Prototype :在此模式中,每次获取将创建一个独立的对象。例如,这可以被用于允许用户拥有他们自己的对象。 由于 org.springframwork.beans.factory.BeanFactory是一个简单的接口,它能被为了底层存储方法而实现。你能够方便地实现你自己的BeanFactory,尽管很少用户需要。
最为常用的定义是: .XmlBeanFactory : 可解析简单直观的定义类和命名对象属性的XML结构。 我们提供了一个DTD来使编写更容易。 .
ListableBeanFactoryImpl :可提供解析存放在属性文件中的bean定义,和可通过编程创建BeanFactories。 每个bean定义可能是一个POJO(通过类名和JavaBean初始属性定义),或是一个FactoryBean。FactoryBean接口添加了一个间接层。通常,这用于使用AOP或其他方法来创建代理对象:
例如,添加了声明性事务管理的代理。(这在概念上和EJB侦听相似,但在实践中实现更简单。) BeanFactories能在一个层次结构中可选择性的参与,根据来自祖先的继承定义。这使在整个应用中公共配置的共享成为可能,虽然个别资源,如controller servlets,也拥有他们自己的独立的对象集合。