主要学习,总结 和介绍一下几点内容:
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
调用FixedDepositD奥Factory的getFixedDepositDao方法的配置在上述代码清单中, 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 的实例是一样的.
网友评论