四、IOC创建对象的方式
1、使用无参构造创建对象–默认
<!--默认使用无参构造--> <bean id="user" class="com.hxl.pojo.User"> <property name="name" value="王木木"/> </bean>
2、使用有参构造创建对象(三种方法)
<!--第一种,下标赋值--> <bean id="user" class="com.hxl.pojo.User"> <!--这里的0代表第一个参数--> <constructor-arg index="0" value="王木木Sir"/> </bean>
<!--第二种:通过类型创建, 不建议使用,因为如果有两个String类型就会出错--> <bean id="user" class="com.hxl.pojo.User"> <constructor-arg type="java.lang.String" value="wangmumu"/> </bean>
<!--第三种:直接通过参数名来设置--> <bean id="user" class="com.hxl.pojo.User"> <constructor-arg name="name" value="王木木"/> </bean>
Spring在创建bean的时候就已经给我们实例化了。也就是说只要在bean中配置了,那在运行的时候不管用不用,到会实例化(创建出一个无参构造对象)
总结:在配置文件加载的时候,容器中管理的对象已经初始化了
代码:
package com.hxl.pojo; public class User { private String name; public User() { System.out.println("User的无参构造!"); } public User(String name) { this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void show(){ System.out.println(this.name); } @Override public String toString() { return "User{" + "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 http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--第一种,下标赋值--> <bean id="user" class="com.hxl.pojo.User"> <!--这里的0代表第一个参数--> <constructor-arg index="0" value="王木木Sir"/> </bean> <!--第二种:通过类型创建,--> <!--不建议使用,因为如果有两个String类型就会出错--> <bean id="user" class="com.hxl.pojo.User"> <constructor-arg type="java.lang.String" value="wangmumu"/> </bean> <!--第三种:直接通过参数名来设置--> <bean id="user" class="com.hxl.pojo.User"> <constructor-arg name="name" value="王木木"/> </bean> </beans>
import com.hxl.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { //Spring容器么,就类似于婚介网站 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user = (User) context.getBean("user"); user.show(); } }
//下面两个方法都可以实现,一个是强转,一个是 User user = (User) context.getBean("user"); User user = context.getBean("user", User.class);