4、spring创建对象(方式、时机)

IOC创建对象:既然spring来管理对象,那对象是怎么被创建出来的呢?很简单,java创建对象可以通过构造方法,spring就是通过反射调用类的构造方法来创建对象的。

一、通过无参构造方法来创建

1、User.java

public class User {

   private String name;

   public User() {
       System.out.println("user无参构造方法");
  }

   public void setName(String name) {
       this.name = name;
  }

   public void show(){
       System.out.println("name="+ name );
  }

}

2、beans.xml




   
       
   

3、测试

@Test
public void test(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   //在执行getBean的时候, user已经创建好了 , 通过无参构造
   User user = (User) context.getBean("user");
   //调用对象的方法 .
   user.show();
}]

结果发现,在调用show方法之前,User对象已经通过无参构造初始化了!

二、通过有参构造方法来创建

1、UserT . java

public class UserT {

   private String name;

   public UserT(String name) {
       this.name = name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public void show(){
       System.out.println("name="+ name );
  }

}

2、beans.xml 有三种方式编写



   
   



   
   



   

3、测试

@Test
public void testT(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   UserT user = (UserT) context.getBean("userT");
   user.show();
}

三、bean创建时机,创建的bean单例

UserT user1 = (UserT) context.getBean("userT");
UserT user2 = (UserT) context.getBean("userT");
user1 == user2  // true
// 在没有使用user时在配置文件加载时也可以看到构造方法中打印的日志
  • 结论:在配置文件加载的时候。spring管理的所有对象都已经初始化了,并且默认这些对象是单例的,内存中只有一份

四、Spring配置总结

1、别名

alias 设置别名 , 为bean设置别名 , 可以设置多个别名



Bean的配置



   

2、import

  • 团队的合作通过import来实现 .
    每个人都写了一个配置文件,最后合到一个配置文件中去,获取的时候只要去总的里面获取就可以了

你可能感兴趣的:(4、spring创建对象(方式、时机))