4、spring-03-ioc2 IoC对象创建方式
-
使用无参构造创建对象,默认!
实体类
package com.gwg.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); } }
配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="com.gwg.pojo.User"> <property name="name" value="狗哥"/> </bean> </beans>
测试
public class MyTest { public static void main(String[] args) { // User user = new User(); ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //在执行getBean的时候, user已经创建好了 , 通过无参构造 User user = (User) context.getBean("user"); //调用对象的方法 . user.show(); }
结果可以发现,在调用show方法之前,User对象已经通过无参构造初始化了!
-
也可以使用有参构造方法创建。
public class User { private String name; public User(String name) { this.name = name; } 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="com.gwg.pojo.User"> <!-- 第一种:参数下标赋值 根据index参数下标设置 --> <!-- index指构造方法 , 下标从0开始 --> <constructor-arg index="0" value="狗哥学编程"/> </bean>
第二种:参数类型 不建议使用
<bean id="user" class="com.gwg.pojo.User"> <!-- 第二种:参数类型 不建议使用--> <!-- 第三种根据参数类型设置 --> <constructor-arg type="java.lang.String" value="gouge"/> </bean>
第三种:直接通过参数名
<bean id="user" class="com.gwg.pojo.User">
<!-- 第三种:直接通过参数名 -->
<!-- name指参数名 -->
<constructor-arg name="name" value="狗哥"/>
</bean>
package com.gwg.pojo;
public class UserT {
private String name;
public UserT() {
System.out.println("UserT的无参构造");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name=" + name);
}
}
管理两个对象 (User UserT)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.gwg.pojo.User">
<!--无参构造的方法-->
<!-- <property name="name" value="狗哥"/>-->
<!-- 第一种:参数下标赋值-->
<!-- <constructor-arg index="0" value="狗哥学编程"/>-->
<!-- 第二种:参数类型 不建议使用-->
<!-- <constructor-arg type="java.lang.String" value="gouge"/>-->
<!-- 第三种:直接通过参数名 -->
<constructor-arg name="name" value="狗哥"/>
</bean>
<bean id="userT" class="com.gwg.pojo.UserT">
</bean>
</beans>
结论:在配置文件加载的时候,容器中管理的对象都已经初始化了!