主要学习,总结 和先容一下几点内容:
1.Spring支持"面向接口编程"的设计方法:
2.使用静态和实例工厂创建bean
3.基于构造函数DI,用于将bean依靠关系作为构造函数参数转达.
4.将简朴的String值作为参数转达给构造函数和setter方法:
5.bean的工作域
1.面向接口编程的设计方法:
假如依靠于其他类的类直接引用其依靠项的具体类,则会导致类之间的精密耦合.这意味着假如要更换其依靠项的其他实现,则必要更改这个依靠于其他类的类自己.
我们知道Java接口界说了器实现类应遵照的左券.因此,假如一个类依靠于其依靠项实现的接口,那么当更换差别的依靠项实现时,类不必要改变.一个类依靠于由其依靠项所实现的接口的应用步调的设计方法称为"面向接口编程". 这种设计方法使得依靠类与依靠项之间松耦合.由以来累实现的接口称为依靠接口.
如上图所示, FixedDepositService 依靠 FixedDepositService 接口, FixedDepositService 接口有两个实现类,可以差别的方式毗连数据库.当有一天必要用Mybatis 毗连数据库时 ,只必要新增一个Mybatis实现类并将实现类提供给FixedDepositService 接口即可,不消修改 FixedDepositService 接口类.
2.使用静态和实例工厂方法创建Spring bean
2.1 用静态工厂创建SpringBean
在上述bean的界说中,class 特性指定了界说静态工厂方法的类的完全限定名称。
factory-method特性指定了spring 容器调用的获取FixedDepositDao 对象实例的静态工厂方法名称。
<constructor-arg>元素在Spring 的bean schema 中界说,用于转达构造函数的参数以及静态和实例工厂方法的参数.
index 特性值为0意味着<contructor-arg>元素为getFixedDepositDao工厂方法的第一个参数(即daoType),而value特性值指定了参数值.假如工厂方法汲取多个参数,则必要为每个参数界说一个<contructor-arg>
2.2实例工厂创建SpringBean
在上述代码清单中, FixedDepositDaoFactory 类被设置为通例的SpringBean ,而且使用单独的<bean>元向来设置实例工厂方法的具体信息.
设置实例工厂的具体信息,使用<bean>元素的factory-bean 和factory-method特性.factory-bean特性是指界说实例工厂的方法的bean、factory-method特性指定实例工厂方法的名称。
与static工厂方法一样,可以使用<constructor-arg> 元素将参数转达给实例工厂方法.
2.3 基于构造函数的DI
2.3.1回顾基于setter 的DI
基于构造函数的DI
基于构造函数和基于setter的DI机制的结合使用
将设置信息转达给bean
bean 的作用域
bean的作用域可以指定,假如不指定默以为singleton范围,表现该实例可以被容器内其他实例共享。
在Web应用场景中,Spring答应你指定其他的范围:request、session、websocket和applciation。这些范围决定了bean实例的生命周期。比方,request 范围的bean 的生命周期仅限于单个HTTP哀求。
JUnit 的 @BeforeClass 注解订定了类中任何测试方法之前调用init方法,这意味着@BeforeClass方法只被调用一次,而@Test注解的方法只有在实验@BeforeClass注解的方法后才气实验.
由于controller bean 是 singleton 范围的,因此 controller1 bean 和 controller1 bean 的实例是一样的. |