针对Bean 生命周期进行管理的轻量级容器
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
用抽象构建框架,用实现扩展细节
优点:提高软件系统的可复用性和可维护性
定义:所有引用基类的地方必须能透明化地使用其子类的对象
即子类可以扩展父类的功能,但是不能改变父类原有的功能。也就是说,在子类继承父类的时候,除了添加新的方法完成新增功能之外,尽量不要重写父类的方法
子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法
子类中可以增加自己特有的方法
当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更加宽松
IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”。
对于面向对象设计及编程的基本思想,前面我们已经讲了很多了,不再赘述,简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

8 8 4.2.5.RELEASE org.springframework spring-core ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-expression ${spring.version} commons-logging commons-logging 1.2 log4j log4j 1.2.17 junit junit 4.12 test
配置文件的名字可以任意设置,建议设置为applicationContext.xml,所以这里我们创建一个名为applicationContext.xml的配置文件
添加相应的模块
在项目中添加mapper 和数据交涉的文件、entity 实体类的包、service 具体业务逻辑的包
通过Set方法注入
张三 李四 张武 王柳
1 2 3 3 4
// @SetterIUserMapper userDao;@SetterList lists;@SetterSet sets;@SetterMap maps;
通过构造方法注入
上面的程序可以看出,是通过set方法注入的对象,那么如何通过构造方法注入呢?
public UserService(IUserMapper userDao) {this.userDao = userDao;}public UserService() {}
spring中scope是一个非常关键的概念,简单说就是对象在spring容器(IOC容器)中的生命周期,也可以理解为对象在spring容器中的创建方式
singleton 单例模式
此取值时表明容器中创建时只存在一个实例,所有引用此bean都是单一实例。
也就是说创建对象是单例模式,并且如果不进行设置,默认就单例
prototype 多例模式
spring容器在进行输出prototype的bean对象 时,会每次都重新生成一个新的对象给请求方,虽然这种类型的对象的实例化以及属性设置等工作都是由容器负责的,但是只要准备完毕,并且对象实例返回给请求 方之后,容器就不在拥有当前对象的引用,请求方需要自己负责当前对象后继生命周期的管理工作,包括该对象的销毁。也就是说,容器每次返回请求方该对象的一 个新的实例之后,就由这个对象“自生自灭”,最典型的体现就是spring与struts2进行整合时,要把action的scope改为 prototype。
简单来说,就是每次获取都创建一个新对象,并且这个对象的生命周期不归Spring管理