Spring IOC创建对象方式
1.通过有参构造方法来创建
1.1. 实体类
public class Hello {
private String str;
public Hello(String str) { //创建一个有参数的构造方法
this.str=str;
}
public void setStr(String str) {
this.str = str;
}
public String getStr() {
return str;
}
@Override
public String toString() {
return "Hello{" +
"str='" + str + '\'' +
'}';
}
}
1.2. 配置文件
<!--第一种 下标赋值-->
<bean id="Hello" class="com.xiong.pojo.Hello">
<constructor-arg index="0" value="xiong"/>
</bean>
<!--第二种 通过类型创建,不建议使用-->
<bean id="Hello1" class="com.xiong.pojo.Hello">
<constructor-arg type="java.lang.String" value="hellp1"/>
</bean>
<!--第三种 直接通过参数名来设置-->
<bean id="Hello2" class="com.xiong.pojo.Hello">
<constructor-arg name="str" value="hello2"/>
</bean>
1.3. 测试文件
public class MyTest {
public static void main(String[] args) {
//获取spring的上下文对象
ApplicationContext Context = new ClassPathXmlApplicationContext("beans.xml");
//我们的对象现在都在spring中管理了,我们现在要使用,直接去里面取出来就可以了.
Object hello = Context.getBean("Hello");
Hello hello1 = (Hello) Context.getBean("Hello1");
Hello hello2 = (Hello) Context.getBean("Hello2");
System.out.println(hello.toString());
System.out.println(hello1.toString());
System.out.println(hello2.toString());
}
}
2.通过无参构造方法来创建
2.1 实体类
public class Hello{
private String str;
public User() {
System.out.println("user无参构造方法");
}
public void setStr(String str) {
this.str = str;
}
public String getStr() {
return str;
}
@Override
public String toString() {
return "Hello{" +
"str='" + str + '\'' +
'}';
}
}
2.2 配置文件
<bean id="Hello3" class="com.xiong.pojo.Hello">
<property name="str" value="Hello World!" />
</bean>
2.3 测试文件
public class MyTest {
public static void main(String[] args) {
//获取spring的上下文对象
ApplicationContext Context = new ClassPathXmlApplicationContext("beans.xml");
//在执行getBean的时候, user已经创建好了 , 通过无参构造
Object hello3 = Context.getBean("Hello3");
System.out.println(hello3.toString());
}
}
总结:在配置文件加载的时候。其中管理的对象都已经初始化了!