JavaSpring【三、Bean】

本文详细介绍了Spring框架中Bean的配置方法,包括idbean、classbean等配置项,以及Bean的作用域、初始化和销毁的过程。同时,还讲解了自动装配Aware接口的使用,以及不同类型的资源加载方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置项

  • id bean的标识
  • class bean的类全名
  • scope bean的作用域
  • constructor-arg 构造注入
  • properties 设值注入
  • autowire 装配模式
  • lazy-init 是否懒加载
  • init-method 初始化方式
  • destroy-method 销毁方法
    692906-20170505142337086-69936377.png

作用域scope

  • singleton 单例,一个bean容器中只存在一份,若有多个容器则有多个实例
  • prototype 原型模式,每次请求创建新实例,destroy不生效
  • request 每个请求创建一个
  • session 当前session内有效
  • global session 单点情景下,跨系统session
    测试singleton和prototype
    692906-20170505143949523-761759699.png
    692906-20170505144004117-1034978755.png
    692906-20170505144013695-457325656.png

生命周期

  • 定义(实现一个类)
  • 初始化
    两种方式
    1、【常用】实现org.springframework.beans.factory.InitializingBean接口,并覆盖afterPropertiesSet()方法
    692906-20170505153831492-1029514987.png

2、配置init-method
692906-20170505153756523-2140882566.png
692906-20170505153818804-1740145503.png
692906-20170505153904179-2052781301.png

3、全局配置,在beans中配置default-init-method(当某个bean设置了1、2种方式,则全局配置不生效)
692906-20170505153931320-69742147.png

  • 使用
  • 销毁
    1、【常用】实现org.springframework.beans.factory.DisposableBean接口,并覆盖destroy()方法
    692906-20170505154353726-842957149.png

2、配置destroy-method
692906-20170505154235820-1178703380.png
692906-20170505154248101-287722380.png

3、全局配置,在beans中配置default-destroy-method(当某个bean设置了1、2种方式,则全局配置不生效)

自动装配Aware

spring提供了以Aware结尾的接口,实现后可在bean初始化后获取相应资源,可以对其进行操作(因为资源较核心,操作须慎重)
类实现ApplicationContextAware接口,覆盖setApplicationContext方法
692906-20170505162357726-945815128.png
配置xml
692906-20170505162508929-1524368046.png
获取该实例,实现aware接口的类setApplicationContext方法会优先执行,且和使用时的实例是同一个
692906-20170505162536320-1194290763.png

AutoAwaring

  • No 什么都不做
  • byName 通过名称,配置后,属性可不用配置,会自动根据名称寻找相应的bean加载(一定要配置bean的id)
  • byType 通过类型(class)匹配对应的bean,若未找到,则什么都不做
  • Constructor 与byType类似,区别在于它应用与构造器参数,若未找到会异常
    Demo
    1、只配置bean
    692906-20170506081023976-1845975382.png
    2、Test类
    692906-20170506081043132-2048685007.png
    3、Service类
    692906-20170506081106461-511984587.png
    4、Dao类
    692906-20170506081118132-916609086.png
    5、RunTest
    692906-20170506081150086-809638909.png

Resources&ResourceLoader

Resource针对于资源的统一接口

  • UrlResource Url对应的资源,根据一个URL地址即可构建
  • ClassPathResource 类路径下的资源文件
  • FileSystemResource 文件系统里的资源文件
  • ServletContextResource 用于访问Servlet环境下的资源
  • InputStreamResource 输入流封装资源
  • ByteArrayResource 字节数组封装资源

ResourceLoader

所有的applicationContext都会实现该接口
前缀:

  • classpath 从classpath中加载
  • file 从文件系统中加载
  • http 从连接中加载
  • (none)

转载于:https://www.cnblogs.com/shanelau/p/6814046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值