尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)03.简单Spring模块的程序分析

分析创建对象的细节

创建对象时无参构造是否执行?

在User的无参构造增加控制台输出

public User(){  
    System.out.println("无参构造被调用了");  
}

控制台输出:

无参构造被调用了
add.....

结论:对象的无参构造会被执行

不使用new方式,还能如何创建对象?

  1. 反射

    1. 加载bean.xml配置文件

    2. 对xml文件进行解析操作

    3. 获取xml文件的bean标签属性值(id和class)

    4. 使用反射根据类全路径创建对象

      //通过反射创建对象  
      @Test  
      public void Test2() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {  
      	//获取class对象  
      	Class tempClass=Class.forName("User");  
      	//创建对象  
      //        Object o = tempClass.newInstance();//已经过时了  
      	User user = (User)tempClass.getDeclaredConstructor().newInstance();  
      	//使用对象
      	user.add();  
      }
      

      控制台输出:

      无参构造被调用了
      add.....
      

创建的对象被放在哪?

将创建的对象放到Map集合中,其中包含对象的唯一标识和类的定义(描述信息)

Map<String, BeanDefinition> beanDefinitionMap
//key:唯一标识
//value:类的定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值