scope 属性值
singleton,表示是单实例对象
prototype,表示是多实例对象
设置 scope 值是 singleton 时候,加载 spring 配置文件时候就会创建单实例对象设置 scope 值是 prototype 时候,不是在加载 spring 配置文件时候创建 对象,在调用getBean 方法时候创建多实例对象
代码:
学生类:
public class User {
//编号
private Integer id;
//姓名
private String name;
//无参构造
public User(){
System.out.println("----User对象那个创建成功(无参构造器)----");
}
//有参构造
public User(Integer id, String name) {
System.out.println("----User对象那个创建成功(有参构造器");
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void initUser(){
System.out.println("创建对象之后初始化");
}
public void destroyUser(){
System.out.println("IOC容器销毁,user对象回收");
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
xml:
<bean id="user" class="app03.User" scope="prototype">
<constructor-arg value="100"/>
<constructor-arg value="hongbing"/>
</bean>
测试类:
public class App {
//创建IoC容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("app03/applicationContext.xml");
@Test
public void testSet() throws Exception{
//获取容器中的对象
User user = (User) ac.getBean("user");
System.out.println(user);
}
}
显示结果: