【学习笔记】IOC创建对象的方式
spring创建对象是通过构造方法来创建的
-
无参构造【默认】
证明:
package pojo; public class User { private String name; public User() { System.out.println("User被创建了!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println("name:"+name); } }
<bean id="User" class="pojo.User"> <property name="name" value="张三"/> </bean>
public void test01(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user = (User) context.getBean("User"); user.show(); }
从结果可以发现,无参构造中的内容也被打印了出来,所以证明spring默认是通过无参构造来创建对象的。
我们都知道,一个类中如果定义了有参构造,在想使用无参构造就必须显示定义,这里我们不去定义无参构造,只定义有参构造,看看会发生什么?
得到的结果是在配置文件中,找不到要创建的类,原因就是没有定义无参构造
-
如果我们想通过有参构造来创建对象,有三种方式
都是使用constructor-arg 标签来为有参构造的参数赋值
-
直接通过属性名
<bean id="User" class="pojo.User"> <constructor-arg name="name" value="张三"/> </bean>
-
通过参数的索引
<bean id="User" class="pojo.User"> <constructor-arg index="0" value="李四"/> </bean>
-
通过参数的类型
<bean id="User" class="pojo.User"> <constructor-arg type="java.lang.String" value="王五"/> </bean>
-
创建对象的时间:加载完配置文件后
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!