SpringIoC容器的三种对象创建方式

本文介绍了Spring IoC容器中XML配置Bean的方式,包括Bean标签的id、class和scope属性。详细讲解了对象的三种创建方式:反射创建、静态方法创建和动态实例化。同时对比了ApplicationContext和BeanFactory的区别,前者在启动时即创建对象,后者采用懒加载策略。
摘要由CSDN通过智能技术生成

XML配置方式配置Bean

Bean标签

  • id:标识符,定位对象的。id不能重复,没有mybatis中namespace之说了
  • class :所创建对象的全限定类名,类似于:com.spring.dao.AccountDaoImpl,不能配置为接口,因为接口不能实例化
  • scope :对象的作用范围,单例和多例,单例:内存中这个类只有这一个对象,创建之后一直使用这一个;多例:当你getBean的时候,每getBean一次都给你创建一个新的对象
    • singleton:单例/单个的意思,默认bean的scope都是单例
    • prototype:多例的意思,每getBean一次就new一个新的对象返回
    • request:在web应用的一个request请求内有效,下个请求内就重新new一个对象
    • session:在web应用的一个session会话内有效,下个会话重新new一个对象

对象创建的三种方式

  1. 通过配置class全限定类名框架底层使用反射技术来创建对象(经常使用,推荐)
    在这里插入图片描述

  2. 静态方法自己new对象,然后加入到Spring的对象容器中管理
    在这里插入图片描述

package com.spring.factory;

import com.spring.service.AccountService;
import com.spring.service.AccountServiceImpl;

public class StaticFactory {

   public static AccountService createAccountService() {
       return new AccountServiceImpl();
   }
}
  1. 动态实例化方法(自己new对象,然后加入到Spring的对象容器中管理)(需要首先定义工厂的bean,然后通过工厂bean对象调用里面的方法返回具体对象)
    在这里插入图片描述
package com.spring.factory;

import com.spring.service.AccountService;
import com.spring.service.AccountServiceImpl;

public class InstanceFactory {

   public AccountService createAccountService() {
       return new AccountServiceImpl();
   }
}

ApplicationContext和BeanFactory

ApplicationContext在启动SpringIOC容器的时候,会立即创建对象放入map中(不存在影响性能的问题

BeanFactory在启动SpringIOC容器的时候,不会立即创建对象,getBean使用对象的时候,Spring才去创建对象(类似于懒加载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值