Spring--三种对象创建方式

第一种方式:空参构造创建对象

最基本的对象创建方式,只需要有一个无参构造函数和字段的set方法。本质上就是使用无参构造器创建对象,然后使用set方法为字段赋值。
User类:

public class User {
    
    public User() {
        System.out.println("User对象空参构造方法!!!!");
    }
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}

applicationContext.xml配置


    
    

测试方法:

public class Demo {
    @Test
    public void fun1(){
        //1 创建容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 向容器"要"user对象
        User u = (User) ac.getBean("user");
        //3 打印user对象
        System.out.println(u);
    }
}

运行JUnit测试输出:

User对象空参构造方法!!!!
User [name=Tome, age=18]

第二种方式:静态工厂创建对象

不使用Spring为我们创建对象,而是采用静态工厂的方式创建对象,由Spring调用静态工厂的静态方法创建对象,再放入Spring容器中。
User类同上
静态工厂类:

public class UserFactory {

    public static User createUser(){
        System.out.println("静态工厂创建User");
        return new User();
    }

}

applicationContext.xml配置:


测试方法:

public class Demo {
    @Test
    public void fun2(){
        //1 创建容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 向容器"要"user对象
        User u = (User) ac.getBean("user2");
        //3 打印user对象
        System.out.println(u);
        }
}

运行JUnit测试输出:

静态工厂创建User
User对象空参构造方法!!!!
User [name=null, age=null]

第三种方式:实例工厂创建对象

实例工程方式需要先由Spring创建工厂实例,然后再调用工厂方法创建对象,放入Spring容器中。
User类同上
实例工厂类:

public class UserFactory {

    public  User createUser(){
        System.out.println("实例工厂创建User");
        return new User();
    }
    
}

applicationContext.xml配置:

    

     

测试方法:

public class Demo {
    @Test
    public void fun3(){
        //1 创建容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 向容器"要"user对象
        User u = (User) ac.getBean("user3");
        //3 打印user对象
        System.out.println(u);
    }
}

运行JUnit测试输出:

实例工厂创建User
User对象空参构造方法!!!!
User [name=null, age=null]

你可能感兴趣的:(Spring--三种对象创建方式)