spring学习2-spring创建对象的方式

spring创建对象的方式

1. 通过无参构造函数创建对象

pojo类

public class User2 {
    private String name;
    public User2(){
        System.out.println("user2 的无参构造函数");
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User2{" +
                "name='" + name + '\'' +
                '}';
    }
}

xml



    
    
        
    

测试类

    @Test
    public void test2(){
        //通过无参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 user = (User2) context.getBean("user2");
System.out.println(user);
    }

结果,可以发现,调用了无参构造方法

user2 的无参构造函数
User2{name='cong2'}

2. 通过有参构造函数创建对象

pojo类

public class User3 {
    private String name;
    public User3(){
        System.out.println("user3 的无参构造函数");
    }
    public User3(String name){
        this.name = name;
        System.out.println("user3 的有参构造函数");
    }
    @Override
    public String toString() {
        return "User3{" +
                "name='" + name + '\'' +
                '}';
    }
}

xml有三种写法

    
    
        
    
    
    
        
    
    
    
        
    

测试类

    @Test
    public void test3(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User3 user = (User3) context.getBean("user31");
        System.out.println(user);
    }

结果,可以看到

user3 的有参构造函数
User3{name='cong31'}

结论:在配置文件加载的时候。其中管理的对象都已经初始化了!

扩展,通过工厂创建对象

1、 普通工厂创建对象

使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)实际开发中有时候会用到别人写好的类,这些类有可能是存在于jar包中的,我们是没法修改的

模拟工厂类

public class User2Factory {
    public User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

xml

    
    
    

测试

    //模拟工厂创建对象
    @Test
    public void test4(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByFactory = (User2) context.getBean("userByFactory");
        System.out.println(userByFactory);
    }

2、 静态工厂创建对象

使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器)

模拟静态工程

public class StaticFactory {
    public static User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

xml

    
    

测试

    //模拟静态工厂创建对象
    @Test
    public void test5(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByStaticFactory = (User2) context.getBean("userByStaticFactory");
        System.out.println(userByStaticFactory);
    }

你可能感兴趣的:(spring学习2-spring创建对象的方式)