IOC创建对象方式
- IOC创建对象的方式,通过实体类的构造器的三种情况进行判断
- 构造器中为有参构造 -->三种创建方式
- 构造器中为无参构造 -->一种
- 构造器中,有参构造和无参构造都有 -->特例分析
- 实体类中的构造器中为无参构造
实体类
package pojo;
public class user {
private String name;
//有参构造和无参构造,自己删减测试
public user(String name) {
this.name = name;
}
public user() {
System.out.println("无参构造");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void test() {
System.out.println("name:"+name);
}
}
beans.xml创建对象:
<bean id="user" class="pojo.user">
<property name="name" value="python"/>
</bean>
- 实体类中的构造器中为有参构造
方式一:通过下标赋值
<bean id="user" class="pojo.user">
<constructor-arg index="0" value="java"/>
</bean>
方式二:通过类型(不推荐使用)
<bean id="user" class="pojo.user">
<constructor-arg type="java.lang.String" value="php"/>
</bean>
方式三:通过参数名
<bean id="user" class="pojo.user">
<constructor-arg name="name" value="c++"/>
</bean>
说明:
- 有参构造,通过
<constructor-arg>标签来对参数进行解析- 通过下标赋值,index:有参构造的参数,从0开始。value:给对应的参数赋值。如果有参构造有多个参数,就需要多个
<constructor-arg>标签,将所有的参数赋值。- 通过类型,需要注意参数的类型,自己可能会看错类型导致错误,不推荐使用。type:参数的类型。value:参数的值
- 通过参数名,name:参数的参数名,value:参数的值
-
实体类中的构造器中有参构造和无参构造都有:只要你引用了有参构造,无参构造就会被覆盖掉,和java一样。但是如果你没有引用有参构造,就默认是无参构造。
-
这里给有多个参数的对象创建吧 实体类:
package pojo;
public class Car {
private int id;
private String name;
public Car(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void showCar(){
System.out.println("id: "+id);
System.out.println("name: "+name);
}
}
beans.xml创建对象 通过下标:
<bean id="car" class="pojo.Car">
<constructor-arg index="0" value="1"/>
<constructor-arg index="1" value="BYD"/>
</bean>
通过类型:
<bean id="car" class="pojo.Car">
<constructor-arg type="int" value="2"/>
<constructor-arg type="java.lang.String" value="Aston Martin"/>
</bean>
通过参数名:
<bean id="car" class="pojo.Car">
<constructor-arg name="id" value="3"/>
<constructor-arg name="name" value="Stretch Lincoln Limousine"/>
</bean>
- 在配置文件加载的时候,其中管理的对象都已经初始化了!也就是说,构造器在配置文件加载的时候就已经被初始化了。
Spring配置
- 别名
alias 设置别名 , 为bean设置别名,可以设置多个别名,但是这个一般不常用,因为在bean配置中也可以设置别名
<alias name="user" alias="u1"/>
- Bean的配置
- id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符
- 如果配置id,又配置了name,那么name是别名
- name可以设置多个别名,可以用逗号,分号,空格隔开。
- class是bean的全限定名=包名+类名
<bean id="car" name="car1 car2,car3;car4" class="pojo.Car">
<property name="id" value="1"/>
<property name="name" value="BYD"/>
</bean>
- import
import通常在一个团队中使用,可以把你们团队中的所有人写的beans.xml文件整合在一起使用
<!--将三个beans.xml整合起来-->
<import resource="beans1.xml"/>
<import resource="beans2.xml"/>
<import resource="beans3.xml"/>