zoukankan      html  css  js  c++  java
  • 002 IOC--Bean创建的分析

    一 .概述

      前面我们说到IOC提供的功能就是两点.

      (1)Bean的创建

      (2)Bean依赖的管理

    本节就讨论Bean的创建的问题.


    二 .java对象到底如何创建

      我们在未使用spring的时候,创建对象的方式只有一个,那就是使用构造函数.

       spring也没有什么其他的神奇能力,依旧还是使用的构造函数.

    我们一般将构造函数分成两类 :

      (1)无参构造函数

      (2)有参构造函数

    为何这样区分呢? 

      对象如果要使用就需要创建出来,使用构造函数式唯一的途径.但是一个对象想要运转就可能需要依赖,如果我们想要保证这种强依赖关系,最好的方式就是在构造函数之中声明.

      如果我们的构造函数需要参数,就说明这个对象需要强依赖某个对象(资源,泛化的资源).

    那么是不是说没有无参构造函数的对象就不需要强依赖呢?不是,虽然能创建出对象来,但是对象未必是可用的,这个时候对象就需要进行初始化操作.

      但是有强依赖的对象一定需要在创建的时候指明,否则根本无法获得这个对象.构造函数决定了这一点.

      这样我们创建对象的方式就从这里出现了一点不同,但是我们需要知道的是Bean的创建就是在使用构造函数.

      记住,创建并不等于初始化,这个概念在spring之中分的很明显,但是我们常常将创建和初始化都称为初始化.


    三 .反射创建对象

      没有其他的方式,spring也是使用了反射来创建对象.这里我们只先说无参的情况下,有参的情况其实就是依赖注入的内容了.

    下面一个简单的例子展示一下反射创建对象: 

    public class MainTest {
        
        public static void main(String[] args) throws Exception {
            //获取类加载器
            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            //加载Date字节码
            Class<?> clazz = classLoader.loadClass("java.util.Date");
            //创建对象,Date用于无参构造函数
            Date date  = (Date) clazz.newInstance();
            System.out.println(date);
        }
    }

    我们给出了java字节码的位置.我们就能使用反射来创建对象.spring也是使用这个方式来创建对象的,当然其中的复杂度spring帮助我们隐藏掉了.


    四 . 总结

      IOC的一个主要任务就是创建对象,我们现在知道创建对象的唯一方式就是构造函数.

      因此我们无论使用什么方式,都是将构造函数的信息交给spring,spring才能帮助我们创建出Bean来.

  • 相关阅读:
    Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复)
    服务器SQL server数据库被加密恢复方案
    Vsan分布式文件系统逻辑架构损坏恢复过程
    Linux服务器数据恢复案例,服务器瘫痪数据恢复成功
    数据库执行truncate table CM_CHECK_ITEM_HIS
    服务器ocfs2文件系统被误格式化的数据恢复过程
    内蒙古某公司XFS文件系统服务器数据恢复报告
    关于vsan分布式服务器数据恢复成功案例分享
    北京某公司存储数据恢复成功案例;存储崩溃数据恢复方法
    IBM X3850服务器数据恢复成功案例
  • 原文地址:https://www.cnblogs.com/trekxu/p/9090441.html
Copyright © 2011-2022 走看看