构造注入、反转控制与依赖注入、Spring创建复杂对象、控制Spring工厂创建对象的次数 打卡第三天

第六章、构造注入

注入:通过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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值