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配置

<bean  name="user" class="pers.zhang.bean.User">
    <property name="name" value="Tome"></property>
    <property name="age" value="18"></property>
</bean>

测试方法:

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配置:

<bean  name="user2" class="pers.zhang.bean.UserFactory" factory-method="createUser" ></bean>

测试方法:

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配置:

    <bean  name="userFactory" class="pers.zhang.bean.UserFactory"   ></bean>

    <bean  name="user3" factory-bean="userFactory" factory-method="createUser" ></bean> 

测试方法:

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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容