Spring学习笔记之一spring的特点
认识Spring?
Spring的核心是个轻量级的容器,它是实现IoC容器和非侵入的框架,并提供AOP概念的实现方式;提供对持久层、事务的支持,提供MVC Web框架的实现。?
轻量级?
轻量级是相对于重量级的容器(如EJB)来说的,Spring核心包不到1MB。?
非侵入性?
洗完让应用程序几乎感受不到框架的存在,减少应用程序从框架移植时的负担。增加可重用性。?
容器?
容器可以管理对象的生成,资源的取得,销毁等生命周期,甚至建立对象与对象之间的依赖关系。?
IoC控制反转与DI依赖注入?
IoC:从对象角度来说可以避免对象之间的耦合,从容器的角度来说可以避免应用程序因依赖于容器的功能,而从容器脱离。?
DI:在配置文件中加以设置,Spring核心容器会自动根据配置,将依赖注入到指定的对象。?
AOP?
可以在不修改任何程序的情况下加入功能或者移除。?
持久化?
提供对持久层的整合,如对JDBC的使用加以封装和简化,提供程式事务与声明事务管理功能。?
Web框架?
提供Model 2框架的解决方案。轻松替换不同view层,将自己熟悉的框架与Spring结合使用。?
控制反转?
控制反转时为了解决依赖关系,通过接口声明,分别写出不同底层的实现,需要那个就调用那个实现,就可以完成对不同底层的切换,而不是修改整个代码。例如:?
Business business = new Business();?
//这里就完成了选择底层驱动,是floppy或者是USB,而源类中用的是IDeviceWriter,这个接口,所选的俩个驱动分别都实现了这个接口。并且复写了saveToDevice()方法。?
business.setDeviceWriter(new FloppyWriter()or new UsbDiskWriter());?
business.saveToDevice();?
还可以用Business工厂方法和xml文件配置进行动态管理。?
依赖注入?
保留抽象接口,让组件依赖于抽象接口,当组件要与其他实际的对象发生依赖关系时,由抽象接口来注入依赖的实际对象。?
分别有三种方法实现:?
Type 1 IoC:?
类实现接口,有较强的侵入性。降低重用性。?
Type 2 IoC:?
上面的例子就是这种方法,利用Setter形式。?
Type 3 IoC:?
利用构造方法实现。