第六章、构造注入
注入:通过Spring配置文件为成员变量进行赋值、
Set注入:Spring调用Set方法,通过配置文件,为成员变量进行赋值
构造注入:Spring调用构造方法,通过配置文件,为成员变量进行赋值
1.开发步骤
提供有参的构造方法
#提供有参构造器
public class Customer implements Serializable {
private String name;
private int age;public Customer(String name, int age) {
this.name = name;
this.age = age;
}
Spring配置文件
<bean id="customer" class="com.constructer.Customer">
<constructor-arg>
<value>xiaojianren</value>
</constructor-arg>
<constructor-arg>
<value>1000</value>
</constructor-arg>
</bean>
2.构造方法重载
2.1 参数个数不同时
通过控制<constructor-arg>标签的数量进行区分
2.2 构造参数个数相同时
通过在标签引入 type 属性 进行类型区分<constructor-arg type="">
3.注入的总结
未来的实战中 应用set注入还是构造注入?
答案:set注入更多
1.构造注入有重载,麻烦
2.Spring框架底层,大量应用了 set注入
第七章、反转控制与依赖注入
1.反转控制 (IOC Inverse of Control) 也称为转移控制
控制:对于成员变量赋值的控制权
反转控制:把对于成员变量赋值的控制权,从代码中(反转)到Spring工厂和配置文件中完成
好处:解耦合
底层实现:工厂设计模式
对的,直接在代码中完成对于成员变量的赋值,对成员变量的赋值控制权=代码
2.依赖注入(Dependency Injection DI)
注入:通过Spring工厂及配置文件,为对象(bean,组件)的成员变量赋值
依赖注入:当一个类需要另一个类时,就意味着依赖,一旦出现依赖,就可以把另一个类作为自己的成员变量,最终通过Spring工厂及配置文件进行注入(赋值)
好处:解耦合
第八章、Spring创建复杂对象
1.什么是复杂对象
复杂对象:指的不能直接通过new构造方法创建的对象
Connection
SqlSessionFactory
2.Spring工厂创建复杂对象的三种方式
第九章、控制Spring工厂创建对象的次数
1.如何控制简单对象的创建次数
配置文件中进行配置:
singleton:每一个IOC容器只会创建一次简单对象,默认值
prototype:每一次都会创建新的对象
<!--控制简单对象创建次数-->
<bean id="scope" scope="singleton"/scope = "prrtotype" class="com.yusael.scope.Scope"/>
2.如何控制复杂对象的创建次数
#通过FactoryBean方式创建复杂对象
public class xxxFactoryBean implements FactoryBean {
public boolean isSingleton() {
return true; // 只会创建⼀次
// return false; // 每⼀次都会创建新的
}
// 省略其余实现方法......
}
如果没有isSingleton方法,还是通过scope属性,进行对象的创建次数的控制
3.为什么要控制对象的创建次数
1.好处:节省不必要的内存浪费
什么样的对象只要创建一次就行:重量级的,线程安全的,可被共用的
1.SqlSessionFactory
2.DAO
3.Service
什么样的对象,每一次都要创建新的:不能够被共用的,线程不安全
1.Connection
2.SqlSession | Session
3.Structs2 Action