spring中的对象创建

240 阅读1分钟

spring中的对象创建

对象的创建时机

核心容器的两个接口

  • AppicationContext:单例对象适用,可以通过内部配置的方式改变对象的创建时机(常用)

    • 它在创建容器时,创建对象采取的是立即加载。在创建容器的时候,只要一读取配置文件,马上创建bean对象
    ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");//在这里创建对象
    
  • BeanFactory:多例对象适用

    • 它在创建容器时,创建对象采取的是延迟加载。什么时候根据id获取对象了,什么时候才创建对象。
    Resource resource = new ClassPathResource("bean.xml");
    BeanFactory factory=new XmlBeanFactory(resource);
    AccountService accountService=(AccountService)factory.getBean("accountService");//在这里创建对象
    

bean创建的三种方式

第一种

  • 适用对象:有默认无参构造函数的对象
  • 原理:通过spring框架直接读取类对象,通过无参构造函数创建
  • 创建方式
<bean id="xxxx" class="xx.xx.xx"></bean>

第二种

  • 适用对象:jar包中的,或者没有默认无参构造函数的对象
  • 原理:通过非静态的factory工厂对象创建
  • 创建方式
<bean id="xxxFactory" class="xxx.xxx.xxx.xxFactory"/><!--创建工厂类的bean对象-->
<bean id="xxx" factory-bean="xxxFactory" factory-method="getxxx"/><!--通过工厂类的方法返回值创建-->

第三种

  • 适用对象:jar包中的,或者没有默认无参构造函数的对象
  • 原理:通过静态的factory工厂对象创建
  • 创建方式
<bean id="xxx" class="xxx.xxx.xxFactory" factory-method="getxxx"/><!--通过静态工厂的方法返回值创建-->