Spring IOC创建对象
4. IOC创建对象的方式
-
使用无参构造创建,默认
User.java 类
package com.peng.pojo; public class User { private String name; public User(){ System.out.println("User无参构造"); } public User(String name) { this.name = name; 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); } }
beans.xml
<?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.peng.pojo.User"> <property name="name" value="peng"/> </bean> </beans>
MyTest.java 测试类
import com.peng.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user = (User)context.getBean("user"); user.show(); } }
输出
User无参构造 name=peng
-
有参构造创建对象(三种方式)
<beans> <!--有参构造的三种方法--> <!--1.下标赋值--> <bean id="user" class="com.peng.pojo.User"> <constructor-arg index="0" value="peng"/> </bean> <!--2.通过类型创建不建议使用--> <bean id="user" class="com.peng.pojo.User"> <constructor-arg type="java.lang.String" value="peng"/> </bean> <!--3.直接通过参数名来设置--> <bean id="user" class="com.peng.pojo.User"> <constructor-arg name="name" value="peng"/> </bean> </beans>
-
Spring 容器执行的时候,不管测试类中是否 get,所有的类都已经被实例化了,什么时候用什么时候 get。
User user = (User)context.getBean("user"); User user2 = (User)context.getBean("user"); System.out.println(user == user2); //输出为true
Spring 中只有一个实例!