栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring5 04 IOC 创建对象的方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring5 04 IOC 创建对象的方式

4.1 IOC 是怎么创建对象的呢?

spring 的 IOC 是怎么创建对象的呢??我们来 用 xml 配置文件 的方式 来探索一下。

package top.muquanyu.pojo;
public class User {
    private String name = null;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public User(){
        System.out.println("调用了无参构造!");
    }
    public void show(){
        System.out.println("name = " + name);
    }
}

我们都知道 一个对象 能被 new 出来,完全归功于 隐藏起来的 构造函数。所以可以大胆的猜想 spring 的 IOC 是在某一个时刻 调用了 构造函数,然后 进行 创建 这个 对象的。



    
        
    


我们 debug 会发现,当 我们解析xml文件后,获取到 上下文对象时,就已经调用了 无参构造了。也就是说 确实它 是 利用 构造函数 去 创建的对象,而且还是 在分析 xml 文件时,直接创建的!!!


4.2 有参构造 IOC 怎么玩

如果我们 要创建的 这个对象,只有 有参构造,而没有无参构造。那么 我们的 xml 应该如何配置呢??我们 怎么 去 把 需要填写的 参数,进行一个 设置呢?

    public User(String name){
        this.name = name;
    }


这个时候 它会提示我们,你并未 设置 有参构造函数里面的 name 参数,则 我们 不能够 成功的 给你 创建一个 对象。

  • 解决方法①(强烈推荐)
    下标 index 确定 每个参数 然后 进行设置。


    
        
        
    


当然我们 还会 因为 配置的顺序问题,导致 最后的 属性可能 再次被设置。比如这副图,我们 在 有参构造之后,又进行了 一次赋值。

  • 解决方法②(不推荐)
    根据 提供的参数类型,来找到第一个对应上的参数,进行赋值的过程。






    
        
    

当我们 有多个参数 同类型的时候,我们在 匹配参数的时候,就会出现 问题。所以不建议使用。

  • 解决方法③(推荐)
    直接输入 对应的参数名,去找参数,然后进行赋值。如果这个参数 的类型,是已经 被你 设置为 bean 的话,那么你可以 ref 赋值。否则 用 value。


spring IOC 容器:就是这个 我们通过 xml 配置文件,获取到的 context 上下文对象。所以一提到 容器的时候,千万别慌,它俩其实是一个东西。

  • 一旦 初始化了 容器,xml 中 配置的所有 bean 对象 都会 被 创建,不过 只能创建 这一个!!!




下图 证明 只创建了 一个对象:

经过这几章的学习,你会 很直接的感受到 Spring IOC 容器就类似于 第三方的中介。帮你 去 托管,去配置一些东西。这个 其实 就是 IOC 思想/理论 的一种实现方式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号