Spring之IOC(二)
2021-02-01 06:17
标签:默认 spring容器 tty nstat return 方法 通过 single public 当用最普通的方式配置一个 通过这种方式创建对象,要求类必须有无参构造,否则抛出异常。 大多数时候,我们面对的类是无法通过无参构造去创建的,例如该类没有无参构造、是一个抽象类等等,此时可以用静态工厂方式创建对象。 实例工厂也可以解决类无法通过无参构造创建的问题,思路与静态工厂类似,只不过实例工厂提供的方法不是静态的。 Spring 内置了工厂接口,也可以通过实现这个接口来开发Spring工厂,通过这个工厂创建对象。 Spring之IOC(二) 标签:默认 spring容器 tty nstat return 方法 通过 single public 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/12814019.htmlIOC(二)
Spring创建对象的方式
1)通过类的无参构造方法创建对象。
在Spring容器初始化时,通过class c = Class.forName("类的全路径名称");
Object obj=c.newInstance();
2) 通过静态工厂创建对象
//没有无参构造
public class Person01 {
public Person01(String name){
System.out.println("Person01被创建了:"+name);
}
}
//静态工厂
public class PersonStaticFactory {
private PersonStaticFactory(){}
public static Person01 getInstance(){
return new Person01("zs");
}
}
//测试
@Test
public void test01(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//通过静态工厂创建对象
Person01 p01 = context.getBean(Person01.class);
((ClassPathXmlApplicationContext)context).close();
}
//配置
3)通过实例工厂创建对象
Spring需要先创建出实例工厂的对象,在调用实例工厂对象上指定的普通方法来创建对象。所以实例工厂也需要配置到Spring管理。//没有无参构造
public class Person01 {
public Person01(String name){
System.out.println("Person01被创建了:"+name);
}
}
//实例工厂
public class PersonInstanceFactory {
public Person01 getInstance(){
return new Person01("ls");
}
}
//测试
@Test
public void test02(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext2.xml");
//通过实例工厂创建对象
Person01 p01 = context.getBean(Person01.class);
((ClassPathXmlApplicationContext)context).close();
}
//配置
4) 通过Spring工厂创建对象
//没有无参构造
//Spring内置工厂
public class PersonSpringFactory implements FactoryBean