Spring复习笔记:Spring中的Bean

Bean的实例化方法

  1. 构造器实例化(最常用)
  2. 静态工厂方式实例化
  3. 实例工厂方式实例化

Bean的作用域

  1. singleton(单例):始终使用的同一个对象 (默认)
  2. prototype(原型):,每次都是一个新的Bean实例
  3. request
  4. session
  5. globalSession
  6. application
  7. Websocket

Bean的生命周期

  1. init-method属性
    用于指定Bean类中的初始化方法的名称,该方法会在Bean实例创建之后被执行
    【相当于Servlet的init()方法】
  2. destroy-method属性
    用于指定Bean类中的销毁方法的名称,该方法会在Ioc容器关闭时,Bean实例销毁之前被执行
    【相当于Servlet的destroy()方法】
    【注意】必须设置 scope=“singleton”,销毁方法才能生效

Bean的装配方式(默认单例)(重点)

  1. 基于XML的装配
    - 设值注入
    满足条件:1.Bean必须有一个无参构造方法2.必须提供setter方法
    使用 为属性注入值
    - 构造注入
    满足条件:Bean必须提供有参构造方法
    使用来为参数注入值
  2. 基于注解(Annotation)的装配 (最常用)
  3. 自动装配
注解自动注入

添加注解自动扫描包<context:component-scan base-package="包名"/>
@Controller …
作用域注解:@Scope(value=“singleton|prototype”)
初始化方法注解:@PostConstruct
销毁方法注解:@PreDestory
简单类型的参数:@Value<无需提供set方法>
引用类型的参数:@AutoWired 通过类型 可以与@Qualifer注解搭配 按照名称匹配
@Resource 默认按照名称,也可以按照类型
集合数据类型无法使用注解注入,只能通过XML配置实现

注意

Bean标签的id属性和name属性的区别

id和name都可以取出bean,但是id属性用来唯一标识bean,id的属性值不可重复
name的属性值可以有多个,用逗号隔开,并可能和其他bean重名

ApplicationContext和BeanFactory的区别
  1. 使用ApplicationContext子接口创建Spring IOC容器时,Bean对象使用立即加载方式,创建IOC容器的同时创建Bean对象
  2. 使用BeanFactory根接口创建Spring IOC容器时,Bean对象使用延迟加载方式,只有真正调用getBean()方法时,才真正创建Bean对象
IOC容器创建Bean实例的执行流程 重点
  1. 创建IoC容器时,解析配置文件,获取每一个标签的class属性(Bean的完整类名),通过反射调用Class.forName(“完整类名”).newInstance()方法创建Bean对象(调用无参的构造方法),并将标签的id属性作为key,对象作为value,保存在IoC容器内部的一个Map中

  2. 调用getBean()方法时,IoC容器根据方法中指定的Bean的id属性值,查找Map中是否存在对应的key,如果存在,则直接将此key对应的Bean对象返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值